mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Clean-up
This commit is contained in:
parent
89a9259918
commit
b4b53b3bc6
6 changed files with 391 additions and 508 deletions
|
@ -1,3 +1,13 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2010, 2012 Andrew Gvozdev and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Andrew Gvozdev - Initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.language.settings.providers;
|
package org.eclipse.cdt.internal.ui.language.settings.providers;
|
||||||
|
|
||||||
import org.eclipse.cdt.ui.dialogs.AbstractCOptionPage;
|
import org.eclipse.cdt.ui.dialogs.AbstractCOptionPage;
|
||||||
|
|
|
@ -95,14 +95,15 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
||||||
private static final int BUTTON_MOVE_UP = 4;
|
private static final int BUTTON_MOVE_UP = 4;
|
||||||
private static final int BUTTON_MOVE_DOWN = 5;
|
private static final int BUTTON_MOVE_DOWN = 5;
|
||||||
|
|
||||||
private final static String[] BUTTON_LABELS = {
|
private final static String[] BUTTON_LABELS = new String[6];
|
||||||
ADD_STR,
|
{
|
||||||
EDIT_STR,
|
BUTTON_LABELS[BUTTON_ADD] = ADD_STR;
|
||||||
DEL_STR,
|
BUTTON_LABELS[BUTTON_EDIT] = EDIT_STR;
|
||||||
null,
|
BUTTON_LABELS[BUTTON_DELETE] = DEL_STR;
|
||||||
MOVEUP_STR,
|
BUTTON_LABELS[BUTTON_MOVE_UP] = MOVEUP_STR;
|
||||||
MOVEDOWN_STR,
|
BUTTON_LABELS[BUTTON_MOVE_DOWN] = MOVEDOWN_STR;
|
||||||
};
|
}
|
||||||
|
|
||||||
private static final String CLEAR_STR = Messages.LanguageSettingsProviderTab_Clear;
|
private static final String CLEAR_STR = Messages.LanguageSettingsProviderTab_Clear;
|
||||||
|
|
||||||
private Map<String, List<ILanguageSettingsProvider>> initialProvidersMap = new HashMap<String, List<ILanguageSettingsProvider>>();
|
private Map<String, List<ILanguageSettingsProvider>> initialProvidersMap = new HashMap<String, List<ILanguageSettingsProvider>>();
|
||||||
|
@ -311,8 +312,21 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
||||||
return provider.getSettingEntries(cfgDescription, rc, currentLanguageId);
|
return provider.getSettingEntries(cfgDescription, rc, currentLanguageId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createTreeForLanguages(Composite comp) {
|
private void trackInitialSettings() {
|
||||||
treeLanguages = new Tree(comp, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL);
|
if (!page.isForPrefs()) {
|
||||||
|
ICConfigurationDescription[] cfgDescriptions = page.getCfgsEditable();
|
||||||
|
for (ICConfigurationDescription cfgDescription : cfgDescriptions) {
|
||||||
|
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
|
||||||
|
String cfgId = cfgDescription.getId();
|
||||||
|
List<ILanguageSettingsProvider> initialProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
||||||
|
initialProvidersMap.put(cfgId, initialProviders);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createTreeForLanguages(Composite parent) {
|
||||||
|
treeLanguages = new Tree(parent, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL);
|
||||||
treeLanguages.setLayoutData(new GridData(GridData.FILL_VERTICAL));
|
treeLanguages.setLayoutData(new GridData(GridData.FILL_VERTICAL));
|
||||||
treeLanguages.setHeaderVisible(true);
|
treeLanguages.setHeaderVisible(true);
|
||||||
|
|
||||||
|
@ -347,8 +361,8 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createTreeForEntries(Composite comp) {
|
private void createTreeForEntries(Composite parent) {
|
||||||
treeEntries = new Tree(comp, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
|
treeEntries = new Tree(parent, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||||
treeEntries.setLayoutData(new GridData(GridData.FILL_VERTICAL));
|
treeEntries.setLayoutData(new GridData(GridData.FILL_VERTICAL));
|
||||||
treeEntries.setHeaderVisible(true);
|
treeEntries.setHeaderVisible(true);
|
||||||
treeEntries.setLinesVisible(true);
|
treeEntries.setLinesVisible(true);
|
||||||
|
@ -394,43 +408,24 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void trackInitialSettings() {
|
private void createSashForm() {
|
||||||
if (page.isForPrefs()) {
|
sashFormEntries = new SashForm(usercomp,SWT.HORIZONTAL);
|
||||||
// AG TODO
|
|
||||||
} else {
|
GridData gd = new GridData(GridData.FILL_BOTH);
|
||||||
ICConfigurationDescription[] cfgDescriptions = page.getCfgsEditable();
|
gd.horizontalSpan = 2;
|
||||||
for (ICConfigurationDescription cfgDescription : cfgDescriptions) {
|
gd.grabExcessVerticalSpace = true;
|
||||||
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
|
sashFormEntries.setLayoutData(gd);
|
||||||
String cfgId = cfgDescription.getId();
|
|
||||||
List<ILanguageSettingsProvider> initialProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
GridLayout layout = new GridLayout();
|
||||||
initialProvidersMap.put(cfgId, initialProviders);
|
sashFormEntries.setLayout(layout);
|
||||||
}
|
|
||||||
}
|
createTreeForLanguages(sashFormEntries);
|
||||||
}
|
createTreeForEntries(sashFormEntries);
|
||||||
|
|
||||||
|
sashFormEntries.setWeights(DEFAULT_ENTRIES_SASH_WEIGHTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void createBuiltInsCheckBox() {
|
||||||
public void createControls(Composite parent) {
|
|
||||||
super.createControls(parent);
|
|
||||||
currentLanguageId = null;
|
|
||||||
|
|
||||||
usercomp.setLayout(new GridLayout());
|
|
||||||
GridData gd = (GridData) usercomp.getLayoutData();
|
|
||||||
// Discourage settings entry table from trying to show all its items at once, see bug 264330
|
|
||||||
gd.heightHint =1;
|
|
||||||
|
|
||||||
if (page instanceof Page_LanguageSettingsProviders) {
|
|
||||||
masterPropertyPage = (Page_LanguageSettingsProviders) page;
|
|
||||||
}
|
|
||||||
|
|
||||||
trackInitialSettings();
|
|
||||||
|
|
||||||
createSashForm();
|
|
||||||
|
|
||||||
// Status line
|
|
||||||
fStatusLine = new StatusMessageLine(usercomp, SWT.LEFT, 2);
|
|
||||||
|
|
||||||
// "Show built-ins" checkbox
|
|
||||||
builtInCheckBox = setupCheck(usercomp, Messages.AbstractLangsListTab_ShowBuiltin, 1, GridData.FILL_HORIZONTAL);
|
builtInCheckBox = setupCheck(usercomp, Messages.AbstractLangsListTab_ShowBuiltin, 1, GridData.FILL_HORIZONTAL);
|
||||||
builtInCheckBox.addSelectionListener(new SelectionAdapter() {
|
builtInCheckBox.addSelectionListener(new SelectionAdapter() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -440,8 +435,9 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
||||||
});
|
});
|
||||||
builtInCheckBox.setSelection(true);
|
builtInCheckBox.setSelection(true);
|
||||||
builtInCheckBox.setEnabled(true);
|
builtInCheckBox.setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
// "I want to try new scanner discovery" temporary checkbox
|
private void createEnableProvidersCheckBox() {
|
||||||
enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL);
|
enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL);
|
||||||
enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() {
|
enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -473,28 +469,34 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
||||||
// display but disable the checkbox for file/folder resource
|
// display but disable the checkbox for file/folder resource
|
||||||
enableProvidersCheckBox.setEnabled(page.isForProject());
|
enableProvidersCheckBox.setEnabled(page.isForProject());
|
||||||
enableTabControls(enableProvidersCheckBox.getSelection());
|
enableTabControls(enableProvidersCheckBox.getSelection());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createControls(Composite parent) {
|
||||||
|
super.createControls(parent);
|
||||||
|
currentLanguageId = null;
|
||||||
|
|
||||||
|
usercomp.setLayout(new GridLayout());
|
||||||
|
GridData gd = (GridData) usercomp.getLayoutData();
|
||||||
|
// Discourage settings entry table from trying to show all its items at once, see bug 264330
|
||||||
|
gd.heightHint =1;
|
||||||
|
|
||||||
|
if (page instanceof Page_LanguageSettingsProviders) {
|
||||||
|
masterPropertyPage = (Page_LanguageSettingsProviders) page;
|
||||||
|
}
|
||||||
|
|
||||||
|
trackInitialSettings();
|
||||||
|
|
||||||
|
createSashForm();
|
||||||
|
fStatusLine = new StatusMessageLine(usercomp, SWT.LEFT, 2);
|
||||||
|
createBuiltInsCheckBox();
|
||||||
|
// "I want to try new scanner discovery" temporary checkbox
|
||||||
|
createEnableProvidersCheckBox();
|
||||||
|
|
||||||
initButtons(BUTTON_LABELS);
|
initButtons(BUTTON_LABELS);
|
||||||
updateData(getResDesc());
|
updateData(getResDesc());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createSashForm() {
|
|
||||||
sashFormEntries = new SashForm(usercomp,SWT.HORIZONTAL);
|
|
||||||
|
|
||||||
GridData gd = new GridData(GridData.FILL_BOTH);
|
|
||||||
gd.horizontalSpan = 2;
|
|
||||||
gd.grabExcessVerticalSpace = true;
|
|
||||||
sashFormEntries.setLayoutData(gd);
|
|
||||||
|
|
||||||
GridLayout layout = new GridLayout();
|
|
||||||
sashFormEntries.setLayout(layout);
|
|
||||||
|
|
||||||
createTreeForLanguages(sashFormEntries);
|
|
||||||
createTreeForEntries(sashFormEntries);
|
|
||||||
|
|
||||||
sashFormEntries.setWeights(DEFAULT_ENTRIES_SASH_WEIGHTS);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void enableTabControls(boolean enable) {
|
private void enableTabControls(boolean enable) {
|
||||||
sashFormEntries.setEnabled(enable);
|
sashFormEntries.setEnabled(enable);
|
||||||
treeLanguages.setEnabled(enable);
|
treeLanguages.setEnabled(enable);
|
||||||
|
@ -778,16 +780,6 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
||||||
return provider;
|
return provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ICLanguageSettingEntry doEdit(ICLanguageSettingEntry ent) {
|
|
||||||
ICLanguageSettingEntry selectedEntry = getSelectedEntry();
|
|
||||||
ICConfigurationDescription cfgDecsription = getConfigurationDescription();
|
|
||||||
LanguageSettingEntryDialog dlg = new LanguageSettingEntryDialog(usercomp.getShell(), cfgDecsription, selectedEntry);
|
|
||||||
if (dlg.open()) {
|
|
||||||
return dlg.getEntries()[0];
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void performEdit(ILanguageSettingsProvider selectedProvider, ICLanguageSettingEntry selectedEntry) {
|
private void performEdit(ILanguageSettingsProvider selectedProvider, ICLanguageSettingEntry selectedEntry) {
|
||||||
if (selectedProvider instanceof ILanguageSettingsEditableProvider && selectedEntry != null) {
|
if (selectedProvider instanceof ILanguageSettingsEditableProvider && selectedEntry != null) {
|
||||||
ICConfigurationDescription cfgDecsription = getConfigurationDescription();
|
ICConfigurationDescription cfgDecsription = getConfigurationDescription();
|
||||||
|
@ -1107,15 +1099,4 @@ providers: for (ILanguageSettingsProvider provider : oldProviders) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Shortcut for setting setting entries for current context.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private void setSettingEntries(ILanguageSettingsEditableProvider provider, List<ICLanguageSettingEntry> entries) {
|
|
||||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
|
||||||
IResource rc = getResource();
|
|
||||||
if (currentLanguageId!=null)
|
|
||||||
provider.setSettingEntries(cfgDescription, rc, currentLanguageId, entries);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,13 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2010, 2012 Andrew Gvozdev and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Andrew Gvozdev - Initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.language.settings.providers;
|
package org.eclipse.cdt.internal.ui.language.settings.providers;
|
||||||
|
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* Andrew Gvozdev - Initial API and implementation
|
* Andrew Gvozdev - Initial API and implementation
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.internal.ui.language.settings.providers;
|
package org.eclipse.cdt.internal.ui.language.settings.providers;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -23,6 +22,8 @@ import java.util.Map;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
import org.eclipse.core.runtime.Assert;
|
import org.eclipse.core.runtime.Assert;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.core.runtime.IStatus;
|
||||||
|
import org.eclipse.core.runtime.Status;
|
||||||
import org.eclipse.jface.dialogs.MessageDialog;
|
import org.eclipse.jface.dialogs.MessageDialog;
|
||||||
import org.eclipse.jface.viewers.ArrayContentProvider;
|
import org.eclipse.jface.viewers.ArrayContentProvider;
|
||||||
import org.eclipse.jface.viewers.CheckStateChangedEvent;
|
import org.eclipse.jface.viewers.CheckStateChangedEvent;
|
||||||
|
@ -74,38 +75,17 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
// TODO: generalize
|
// TODO: generalize
|
||||||
private static final String TEST_PLUGIN_ID_PATTERN = "org.eclipse.cdt.*.tests.*"; //$NON-NLS-1$
|
private static final String TEST_PLUGIN_ID_PATTERN = "org.eclipse.cdt.*.tests.*"; //$NON-NLS-1$
|
||||||
|
|
||||||
// private static final String RENAME_STR = "Rename...";
|
|
||||||
// private static final String RUN_STR = Messages.LanguageSettingsProviderTab_Run;
|
|
||||||
private static final String CLEAR_STR = Messages.LanguageSettingsProviderTab_Clear;
|
private static final String CLEAR_STR = Messages.LanguageSettingsProviderTab_Clear;
|
||||||
private static final String RESET_STR = "Reset";
|
private static final String RESET_STR = "Reset";
|
||||||
|
|
||||||
// private static final int BUTTON_RENAME = 0;
|
|
||||||
// private static final int BUTTON_RUN = 0;
|
|
||||||
private static final int BUTTON_CLEAR = 0;
|
private static final int BUTTON_CLEAR = 0;
|
||||||
private static final int BUTTON_RESET = 1;
|
private static final int BUTTON_RESET = 1;
|
||||||
// there is a separator instead of button #2
|
// there is a separator instead of button #2
|
||||||
private static final int BUTTON_MOVE_UP = 3;
|
private static final int BUTTON_MOVE_UP = 3;
|
||||||
private static final int BUTTON_MOVE_DOWN = 4;
|
private static final int BUTTON_MOVE_DOWN = 4;
|
||||||
|
|
||||||
private final static String[] BUTTON_LABELS_PROJECT = {
|
|
||||||
// RENAME_STR,
|
|
||||||
// RUN_STR,
|
|
||||||
CLEAR_STR,
|
|
||||||
RESET_STR,
|
|
||||||
null,
|
|
||||||
MOVEUP_STR,
|
|
||||||
MOVEDOWN_STR,
|
|
||||||
};
|
|
||||||
|
|
||||||
private final static String[] BUTTON_LABELS_PREF = {
|
|
||||||
// RENAME_STR,
|
|
||||||
// RUN_STR,
|
|
||||||
CLEAR_STR,
|
|
||||||
RESET_STR,
|
|
||||||
};
|
|
||||||
|
|
||||||
private static final int[] DEFAULT_CONFIGURE_SASH_WEIGHTS = new int[] { 50, 50 };
|
private static final int[] DEFAULT_CONFIGURE_SASH_WEIGHTS = new int[] { 50, 50 };
|
||||||
private SashForm sashFormConfigure;
|
private SashForm sashFormProviders;
|
||||||
|
|
||||||
private Table tableProviders;
|
private Table tableProviders;
|
||||||
private CheckboxTableViewer tableProvidersViewer;
|
private CheckboxTableViewer tableProvidersViewer;
|
||||||
|
@ -117,7 +97,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
private StatusMessageLine fStatusLine;
|
private StatusMessageLine fStatusLine;
|
||||||
|
|
||||||
private Button sharedProviderCheckBox = null;
|
private Button sharedProviderCheckBox = null;
|
||||||
private Link linkWorkspacePreferences = null;
|
private Link linkToWorkspacePreferences = null;
|
||||||
private Button projectStorageCheckBox = null;
|
private Button projectStorageCheckBox = null;
|
||||||
|
|
||||||
private Page_LanguageSettingsProviders masterPropertyPage = null;
|
private Page_LanguageSettingsProviders masterPropertyPage = null;
|
||||||
|
@ -152,6 +132,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider)rawProvider, true);
|
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider)rawProvider, true);
|
||||||
if (newProvider != null) {
|
if (newProvider != null) {
|
||||||
replaceSelectedProvider(newProvider);
|
replaceSelectedProvider(newProvider);
|
||||||
|
// Warning: Do not initializeOptionsPage() here as the method can be called from an existing page
|
||||||
}
|
}
|
||||||
|
|
||||||
return newProvider;
|
return newProvider;
|
||||||
|
@ -160,16 +141,22 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
private boolean isReconfiguredForProject(ILanguageSettingsProvider provider) {
|
private boolean isReconfiguredForProject(ILanguageSettingsProvider provider) {
|
||||||
String id = provider.getId();
|
String id = provider.getId();
|
||||||
|
|
||||||
// check for the provider mismatch in configuration list vs. default list from the tool-chain
|
|
||||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||||
String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds();
|
String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds();
|
||||||
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
||||||
if (defaultIds != null && Arrays.asList(defaultIds).contains(id) != providers.contains(provider)) {
|
|
||||||
|
// check for the provider mismatch in configuration list vs. default list from the tool-chain
|
||||||
|
if (defaultIds != null && (Arrays.asList(defaultIds).contains(id) != providers.contains(provider))) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if provider belongs to configuration (i.e. checked in the table)
|
||||||
|
if (!providers.contains(provider)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// check if "shared" flag matches default shared preference from extension point definition
|
// check if "shared" flag matches default shared preference from extension point definition
|
||||||
if (providers.contains(provider) && LanguageSettingsManager.isPreferShared(id) != LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
if (LanguageSettingsManager.isPreferShared(id) != LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,11 +169,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
|
|
||||||
private boolean isEditedForProject(ILanguageSettingsProvider provider) {
|
private boolean isEditedForProject(ILanguageSettingsProvider provider) {
|
||||||
String id = provider.getId();
|
String id = provider.getId();
|
||||||
|
|
||||||
// check for the provider mismatch in configuration list vs. initial list
|
|
||||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||||
List<ILanguageSettingsProvider> initialProviders = initialProvidersByCfg.get(cfgDescription.getId());
|
List<ILanguageSettingsProvider> initialProviders = initialProvidersByCfg.get(cfgDescription.getId());
|
||||||
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
List<ILanguageSettingsProvider> providers = getCheckedProviders();
|
||||||
|
|
||||||
|
// check for the provider mismatch in configuration list vs. initial list
|
||||||
ILanguageSettingsProvider initialProvider = findProvider(id, initialProviders);
|
ILanguageSettingsProvider initialProvider = findProvider(id, initialProviders);
|
||||||
if ((initialProvider != null) != providers.contains(provider)) {
|
if ((initialProvider != null) != providers.contains(provider)) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -213,7 +200,6 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
return overlayKeys;
|
return overlayKeys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
String[] overlayKeys = super.getOverlayKeys(provider);
|
String[] overlayKeys = super.getOverlayKeys(provider);
|
||||||
|
|
||||||
if (page.isForProject()) {
|
if (page.isForProject()) {
|
||||||
|
@ -294,7 +280,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void trackInitialSettings() {
|
private void trackInitialSettings() {
|
||||||
if (page.isForProject()) {
|
if (!page.isForPrefs()) {
|
||||||
ICConfigurationDescription[] cfgDescriptions = page.getCfgsEditable();
|
ICConfigurationDescription[] cfgDescriptions = page.getCfgsEditable();
|
||||||
for (ICConfigurationDescription cfgDescription : cfgDescriptions) {
|
for (ICConfigurationDescription cfgDescription : cfgDescriptions) {
|
||||||
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
|
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
|
||||||
|
@ -310,10 +296,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
@Override
|
@Override
|
||||||
public void createControls(Composite parent) {
|
public void createControls(Composite parent) {
|
||||||
super.createControls(parent);
|
super.createControls(parent);
|
||||||
|
|
||||||
usercomp.setLayout(new GridLayout());
|
usercomp.setLayout(new GridLayout());
|
||||||
GridData gd = (GridData) usercomp.getLayoutData();
|
GridData gd = (GridData) usercomp.getLayoutData();
|
||||||
// Discourage settings entry table from trying to show all its items at once, see bug 264330
|
// Discourage settings entry table from trying to show all its items at once, see bug 264330
|
||||||
gd.heightHint =1;
|
gd.heightHint = 1;
|
||||||
|
|
||||||
if (page instanceof Page_LanguageSettingsProviders) {
|
if (page instanceof Page_LanguageSettingsProviders) {
|
||||||
masterPropertyPage = (Page_LanguageSettingsProviders) page;
|
masterPropertyPage = (Page_LanguageSettingsProviders) page;
|
||||||
|
@ -321,16 +308,31 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
|
|
||||||
trackInitialSettings();
|
trackInitialSettings();
|
||||||
|
|
||||||
// SashForms for each mode
|
createSashForm();
|
||||||
createConfigureSashForm();
|
|
||||||
|
|
||||||
// Status line
|
|
||||||
fStatusLine = new StatusMessageLine(usercomp, SWT.LEFT, 2);
|
fStatusLine = new StatusMessageLine(usercomp, SWT.LEFT, 2);
|
||||||
|
if (!page.isForPrefs()) {
|
||||||
|
createEnableProvidersCheckBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] buttonLabels;
|
||||||
if (page.isForPrefs()) {
|
if (page.isForPrefs()) {
|
||||||
initButtons(BUTTON_LABELS_PREF);
|
buttonLabels = new String[2];
|
||||||
|
buttonLabels[BUTTON_CLEAR] = CLEAR_STR;
|
||||||
|
buttonLabels[BUTTON_RESET] = RESET_STR;
|
||||||
} else {
|
} else {
|
||||||
|
buttonLabels = new String[5];
|
||||||
|
buttonLabels[BUTTON_CLEAR] = CLEAR_STR;
|
||||||
|
buttonLabels[BUTTON_RESET] = RESET_STR;
|
||||||
|
buttonLabels[BUTTON_MOVE_UP] = MOVEUP_STR;
|
||||||
|
buttonLabels[BUTTON_MOVE_DOWN] = MOVEDOWN_STR;
|
||||||
|
}
|
||||||
|
initButtons(buttonLabels);
|
||||||
|
|
||||||
|
updateData(getResDesc());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createEnableProvidersCheckBox() {
|
||||||
// "I want to try new scanner discovery" temporary checkbox
|
// "I want to try new scanner discovery" temporary checkbox
|
||||||
enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL);
|
enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL);
|
||||||
enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() {
|
enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() {
|
||||||
|
@ -350,35 +352,39 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
|
|
||||||
}
|
}
|
||||||
enableControls(enabled);
|
enableControls(enabled);
|
||||||
updateStatusLine();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (masterPropertyPage!=null)
|
if (masterPropertyPage!=null) {
|
||||||
enableProvidersCheckBox.setSelection(masterPropertyPage.isLanguageSettingsProvidersEnabled());
|
enableProvidersCheckBox.setSelection(masterPropertyPage.isLanguageSettingsProvidersEnabled());
|
||||||
else
|
} else {
|
||||||
enableProvidersCheckBox.setSelection(ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(page.getProject()));
|
enableProvidersCheckBox.setSelection(ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(page.getProject()));
|
||||||
|
}
|
||||||
// display but disable the checkbox for file/folder resource
|
// display but disable the checkbox for file/folder resource
|
||||||
enableProvidersCheckBox.setEnabled(page.isForProject());
|
enableProvidersCheckBox.setEnabled(page.isForProject());
|
||||||
enableControls(enableProvidersCheckBox.getSelection());
|
enableControls(enableProvidersCheckBox.getSelection());
|
||||||
|
|
||||||
initButtons(BUTTON_LABELS_PROJECT);
|
|
||||||
}
|
|
||||||
updateData(getResDesc());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createConfigureSashForm() {
|
private void createSashForm() {
|
||||||
// SashForm for Configure
|
sashFormProviders = new SashForm(usercomp, SWT.VERTICAL);
|
||||||
sashFormConfigure = new SashForm(usercomp, SWT.VERTICAL);
|
|
||||||
GridLayout layout = new GridLayout();
|
GridLayout layout = new GridLayout();
|
||||||
sashFormConfigure.setLayout(layout);
|
sashFormProviders.setLayout(layout);
|
||||||
|
GridData gd = new GridData(GridData.FILL_BOTH);
|
||||||
|
gd.horizontalSpan = 2;
|
||||||
|
sashFormProviders.setLayoutData(gd);
|
||||||
|
|
||||||
// Providers table
|
createTreeForProviders(sashFormProviders);
|
||||||
Composite compositeSashForm = new Composite(sashFormConfigure, SWT.BORDER | SWT.SINGLE);
|
createOptionsPane(sashFormProviders);
|
||||||
compositeSashForm.setLayout(new GridLayout());
|
|
||||||
|
sashFormProviders.setWeights(DEFAULT_CONFIGURE_SASH_WEIGHTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createTreeForProviders(Composite parent) {
|
||||||
|
Composite composite = new Composite(parent, SWT.BORDER | SWT.SINGLE);
|
||||||
|
composite.setLayout(new GridLayout());
|
||||||
|
|
||||||
// items checkboxes only for project properties page
|
// items checkboxes only for project properties page
|
||||||
tableProviders = new Table(compositeSashForm, page.isForPrefs() ? SWT.NONE : SWT.CHECK);
|
tableProviders = new Table(composite, page.isForPrefs() ? SWT.NONE : SWT.CHECK);
|
||||||
tableProviders.setLayoutData(new GridData(GridData.FILL_BOTH));
|
tableProviders.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||||
tableProviders.addSelectionListener(new SelectionAdapter() {
|
tableProviders.addSelectionListener(new SelectionAdapter() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -394,134 +400,140 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
tableProvidersViewer.addCheckStateListener(new ICheckStateListener() {
|
tableProvidersViewer.addCheckStateListener(new ICheckStateListener() {
|
||||||
@Override
|
@Override
|
||||||
public void checkStateChanged(CheckStateChangedEvent event) {
|
public void checkStateChanged(CheckStateChangedEvent event) {
|
||||||
// TODO: clean-up - too many manipulations in this method
|
ILanguageSettingsProvider checkedProvider = (ILanguageSettingsProvider) event.getElement();
|
||||||
|
String id = checkedProvider.getId();
|
||||||
ILanguageSettingsProvider provider = (ILanguageSettingsProvider) event.getElement();
|
ILanguageSettingsProvider newProvider = null;
|
||||||
saveCheckedProviders(provider);
|
|
||||||
|
|
||||||
int pos = presentedProviders.indexOf(provider);
|
|
||||||
tableProviders.setSelection(pos);
|
|
||||||
|
|
||||||
if (event.getChecked()) {
|
if (event.getChecked()) {
|
||||||
if (LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
if (LanguageSettingsManager.isWorkspaceProvider(checkedProvider) && !LanguageSettingsManager.isPreferShared(id)) {
|
||||||
if (!LanguageSettingsManager.isPreferShared(provider.getId())) {
|
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(checkedProvider);
|
||||||
// Switch to non-shared provider instance
|
|
||||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
|
||||||
if (rawProvider instanceof ILanguageSettingsEditableProvider) {
|
if (rawProvider instanceof ILanguageSettingsEditableProvider) {
|
||||||
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) rawProvider, false);
|
newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) rawProvider, false);
|
||||||
if (newProvider != null) {
|
|
||||||
provider = newProvider;
|
|
||||||
replaceSelectedProvider(provider);
|
|
||||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
|
||||||
initializeOptionsPage(provider, cfgDescription);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
if (!LanguageSettingsManager.isWorkspaceProvider(checkedProvider)) {
|
||||||
provider = LanguageSettingsManager.getWorkspaceProvider(provider.getId());
|
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
|
||||||
replaceSelectedProvider(provider);
|
|
||||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
|
||||||
initializeOptionsPage(provider, cfgDescription);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int pos = presentedProviders.indexOf(checkedProvider);
|
||||||
|
tableProviders.setSelection(pos);
|
||||||
|
|
||||||
|
if (newProvider != null) {
|
||||||
|
replaceSelectedProvider(newProvider); // will refresh and save checked providers
|
||||||
|
initializeOptionsPage(newProvider);
|
||||||
|
} else {
|
||||||
|
tableProvidersViewer.refresh(checkedProvider);
|
||||||
|
saveCheckedProviders();
|
||||||
|
// option page is reused
|
||||||
|
}
|
||||||
|
|
||||||
displaySelectedOptionPage();
|
displaySelectedOptionPage();
|
||||||
tableProvidersViewer.update(provider, null);
|
|
||||||
updateButtons();
|
updateButtons();
|
||||||
}});
|
}
|
||||||
|
});
|
||||||
createOptionsControl();
|
|
||||||
|
|
||||||
sashFormConfigure.setWeights(DEFAULT_CONFIGURE_SASH_WEIGHTS);
|
|
||||||
enableSashForm(sashFormConfigure, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Link createLinkToPreferences(final Composite parent, int span) {
|
private void createLinkToPreferences(final Composite parent, int span) {
|
||||||
Link link = new Link(parent, SWT.NONE);
|
linkToWorkspacePreferences = new Link(parent, SWT.NONE);
|
||||||
|
linkToWorkspacePreferences.setText("Options of global providers below can be changed in <a href=\"workspace\">Workspace Settings</a>, Discovery Tab.");
|
||||||
GridData gd = new GridData();
|
GridData gd = new GridData();
|
||||||
gd.horizontalSpan = span;
|
gd.horizontalSpan = span;
|
||||||
link.setLayoutData(gd);
|
linkToWorkspacePreferences.setLayoutData(gd);
|
||||||
|
|
||||||
link.addListener(SWT.Selection, new Listener() {
|
linkToWorkspacePreferences.addListener(SWT.Selection, new Listener() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(Event event) {
|
public void handleEvent(Event event) {
|
||||||
// Use event.text to tell which link was used
|
// Use event.text to tell which link was used
|
||||||
PreferencesUtil.createPreferenceDialogOn(parent.getShell(), WORKSPACE_PREFERENCE_PAGE, null, null).open();
|
PreferencesUtil.createPreferenceDialogOn(parent.getShell(), WORKSPACE_PREFERENCE_PAGE, null, null).open();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return link;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called from globalProviderCheckBox listener
|
// Called from globalProviderCheckBox listener
|
||||||
private ILanguageSettingsProvider toggleGlobalProvider(ILanguageSettingsProvider oldProvider, boolean toGlobal) {
|
private ILanguageSettingsProvider toggleGlobalProvider(ILanguageSettingsProvider provider, boolean toGlobal) {
|
||||||
ILanguageSettingsProvider newProvider = null;
|
ILanguageSettingsProvider newProvider = null;
|
||||||
|
|
||||||
String id = oldProvider.getId();
|
String id = provider.getId();
|
||||||
if (toGlobal) {
|
if (toGlobal) {
|
||||||
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
|
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
|
||||||
} else {
|
} else {
|
||||||
// Local provider instance chosen
|
// Toggle to configuration-owned provider
|
||||||
try {
|
try {
|
||||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(oldProvider);
|
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||||
if (rawProvider instanceof ILanguageSettingsEditableProvider) {
|
if (rawProvider instanceof ILanguageSettingsEditableProvider) {
|
||||||
newProvider = ((ILanguageSettingsEditableProvider) rawProvider).cloneShallow();
|
newProvider = ((ILanguageSettingsEditableProvider) rawProvider).cloneShallow();
|
||||||
}
|
}
|
||||||
} catch (CloneNotSupportedException e) {
|
} catch (CloneNotSupportedException e) {
|
||||||
CUIPlugin.log("Error cloning provider " + oldProvider.getId(), e);
|
CUIPlugin.log("Error cloning provider " + id, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (newProvider!=null) {
|
if (newProvider != null) {
|
||||||
replaceSelectedProvider(newProvider);
|
replaceSelectedProvider(newProvider);
|
||||||
|
initializeOptionsPage(newProvider);
|
||||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
|
||||||
initializeOptionsPage(newProvider, cfgDescription);
|
|
||||||
displaySelectedOptionPage();
|
displaySelectedOptionPage();
|
||||||
|
updateButtons();
|
||||||
} else {
|
} else {
|
||||||
newProvider = oldProvider;
|
newProvider = provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
return newProvider;
|
return newProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void replaceSelectedProvider(ILanguageSettingsProvider newProvider) {
|
/**
|
||||||
int pos = tableProviders.getSelectionIndex();
|
* Refresh provider item in the table and update buttons.
|
||||||
presentedProviders.set(pos, newProvider);
|
* This method is intended for use by an Options Page of the provider.
|
||||||
tableProvidersViewer.setInput(presentedProviders);
|
*
|
||||||
tableProviders.setSelection(pos);
|
* @param provider - provider item in the table to refresh.
|
||||||
|
*/
|
||||||
ICConfigurationDescription cfgDescription = null;
|
|
||||||
if (!page.isForPrefs()) {
|
|
||||||
cfgDescription = getConfigurationDescription();
|
|
||||||
|
|
||||||
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
|
|
||||||
List<ILanguageSettingsProvider> cfgProviders = new ArrayList<ILanguageSettingsProvider>(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders());
|
|
||||||
pos = getProviderIndex(newProvider.getId(), cfgProviders);
|
|
||||||
if (pos >= 0) {
|
|
||||||
cfgProviders.set(pos, newProvider);
|
|
||||||
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(cfgProviders);
|
|
||||||
tableProvidersViewer.setCheckedElements(cfgProviders.toArray(new ILanguageSettingsProvider[0]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
refreshItem(newProvider);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void refreshItem(ILanguageSettingsProvider provider) {
|
public void refreshItem(ILanguageSettingsProvider provider) {
|
||||||
tableProvidersViewer.refresh(provider);
|
tableProvidersViewer.refresh(provider);
|
||||||
updateButtons();
|
updateButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createOptionsControl() {
|
private void createOptionsPane(Composite parent) {
|
||||||
groupOptionsPage = new Group(sashFormConfigure, SWT.SHADOW_ETCHED_IN);
|
groupOptionsPage = new Group(parent, SWT.SHADOW_ETCHED_IN);
|
||||||
groupOptionsPage.setText("Language Settings Provider Options");
|
groupOptionsPage.setText("Language Settings Provider Options");
|
||||||
groupOptionsPage.setLayout(new GridLayout(2, false));
|
groupOptionsPage.setLayout(new GridLayout(2, false));
|
||||||
|
|
||||||
if (!page.isForPrefs()) {
|
if (!page.isForPrefs()) {
|
||||||
if (sharedProviderCheckBox==null) {
|
createSharedProviderCheckBox(groupOptionsPage);
|
||||||
sharedProviderCheckBox = new Button(groupOptionsPage, SWT.CHECK);
|
createProjectStorageCheckBox(groupOptionsPage);
|
||||||
|
createLinkToPreferences(groupOptionsPage, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
compositeOptionsPage = new Composite(groupOptionsPage, SWT.NONE);
|
||||||
|
compositeOptionsPage.setLayout(new TabFolderLayout());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createProjectStorageCheckBox(Composite parent) {
|
||||||
|
projectStorageCheckBox = new Button(parent, SWT.CHECK);
|
||||||
|
projectStorageCheckBox.setText("Store entries in project settings folder (easing project miration)");
|
||||||
|
projectStorageCheckBox.addSelectionListener(new SelectionAdapter() {
|
||||||
|
@Override
|
||||||
|
public void widgetSelected(SelectionEvent e) {
|
||||||
|
boolean inProjectArea = projectStorageCheckBox.getSelection();
|
||||||
|
ILanguageSettingsProvider newProvider = getWorkingCopy(getSelectedProvider().getId());
|
||||||
|
// FIXME
|
||||||
|
Assert.isTrue(newProvider instanceof LanguageSettingsSerializableProvider);
|
||||||
|
|
||||||
|
LanguageSettingsManager.setStoringEntriesInProjectArea((LanguageSettingsSerializableProvider) newProvider, inProjectArea);
|
||||||
|
replaceSelectedProvider(newProvider);
|
||||||
|
initializeOptionsPage(newProvider);
|
||||||
|
displaySelectedOptionPage();
|
||||||
|
updateButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void widgetDefaultSelected(SelectionEvent e) {
|
||||||
|
widgetSelected(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createSharedProviderCheckBox(Composite parent) {
|
||||||
|
sharedProviderCheckBox = new Button(parent, SWT.CHECK);
|
||||||
sharedProviderCheckBox.setText("Share setting entries between projects (global provider)");
|
sharedProviderCheckBox.setText("Share setting entries between projects (global provider)");
|
||||||
sharedProviderCheckBox.addSelectionListener(new SelectionAdapter() {
|
sharedProviderCheckBox.addSelectionListener(new SelectionAdapter() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -529,6 +541,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
boolean isGlobal = sharedProviderCheckBox.getSelection();
|
boolean isGlobal = sharedProviderCheckBox.getSelection();
|
||||||
ILanguageSettingsProvider provider = getSelectedProvider();
|
ILanguageSettingsProvider provider = getSelectedProvider();
|
||||||
if (isGlobal != LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
if (isGlobal != LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
||||||
|
// globality changed
|
||||||
provider = toggleGlobalProvider(provider, isGlobal);
|
provider = toggleGlobalProvider(provider, isGlobal);
|
||||||
}
|
}
|
||||||
projectStorageCheckBox.setSelection(provider instanceof LanguageSettingsSerializableProvider
|
projectStorageCheckBox.setSelection(provider instanceof LanguageSettingsSerializableProvider
|
||||||
|
@ -539,49 +552,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
public void widgetDefaultSelected(SelectionEvent e) {
|
public void widgetDefaultSelected(SelectionEvent e) {
|
||||||
widgetSelected(e);
|
widgetSelected(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (projectStorageCheckBox == null) {
|
|
||||||
projectStorageCheckBox = new Button(groupOptionsPage, SWT.CHECK);
|
|
||||||
projectStorageCheckBox.setText("Store entries in project settings folder (easing project miration)");
|
|
||||||
projectStorageCheckBox.addSelectionListener(new SelectionAdapter() {
|
|
||||||
@Override
|
|
||||||
public void widgetSelected(SelectionEvent e) {
|
|
||||||
boolean isWithProject = projectStorageCheckBox.getSelection();
|
|
||||||
ILanguageSettingsProvider provider = getWorkingCopy(getSelectedProvider().getId());
|
|
||||||
Assert.isTrue(provider instanceof LanguageSettingsSerializableProvider);
|
|
||||||
LanguageSettingsManager.setStoringEntriesInProjectArea((LanguageSettingsSerializableProvider) provider, isWithProject);
|
|
||||||
refreshItem(provider);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void widgetDefaultSelected(SelectionEvent e) {
|
|
||||||
widgetSelected(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
linkWorkspacePreferences = createLinkToPreferences(groupOptionsPage, 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
compositeOptionsPage = new Composite(groupOptionsPage, SWT.NONE);
|
|
||||||
compositeOptionsPage.setLayout(new TabFolderLayout());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void enableSashForm(SashForm sashForm, boolean enable) {
|
|
||||||
sashForm.setVisible(enable);
|
|
||||||
// Some of woodoo to fill properties page vertically and still keep right border visible in preferences
|
|
||||||
GridData gd = new GridData(enable || page.isForPrefs() ? GridData.FILL_BOTH : SWT.NONE);
|
|
||||||
gd.horizontalSpan = 2;
|
|
||||||
gd.heightHint = enable ? SWT.DEFAULT : 0;
|
|
||||||
sashForm.setLayoutData(gd);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void enableControls(boolean enable) {
|
private void enableControls(boolean enable) {
|
||||||
sashFormConfigure.setEnabled(enable);
|
sashFormProviders.setEnabled(enable);
|
||||||
tableProviders.setEnabled(enable);
|
tableProviders.setEnabled(enable);
|
||||||
compositeOptionsPage.setEnabled(enable);
|
compositeOptionsPage.setEnabled(enable);
|
||||||
|
|
||||||
|
@ -598,11 +573,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Populate provider tables and their option pages which are used in Configure mode
|
* Populate provider tables and their option pages
|
||||||
*/
|
*/
|
||||||
private void updateProvidersTable() {
|
private void updateProvidersTable() {
|
||||||
ILanguageSettingsProvider selectedProvider = getSelectedProvider();
|
ILanguageSettingsProvider selectedProvider = getSelectedProvider();
|
||||||
String selectedId = selectedProvider!=null ? selectedProvider.getId() : null;
|
String selectedId = selectedProvider != null ? selectedProvider.getId() : null;
|
||||||
|
|
||||||
// update viewer if the list of providers changed
|
// update viewer if the list of providers changed
|
||||||
int pos = tableProviders.getSelectionIndex();
|
int pos = tableProviders.getSelectionIndex();
|
||||||
|
@ -615,8 +590,8 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
tableProvidersViewer.setCheckedElements(cfgProviders.toArray(new ILanguageSettingsProvider[0]));
|
tableProvidersViewer.setCheckedElements(cfgProviders.toArray(new ILanguageSettingsProvider[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectedId!=null) {
|
if (selectedId != null) {
|
||||||
for (int i=0; i<presentedProviders.size(); i++) {
|
for (int i = 0; i < presentedProviders.size(); i++) {
|
||||||
if (selectedId.equals(presentedProviders.get(i).getId())) {
|
if (selectedId.equals(presentedProviders.get(i).getId())) {
|
||||||
tableProviders.setSelection(i);
|
tableProviders.setSelection(i);
|
||||||
break;
|
break;
|
||||||
|
@ -626,7 +601,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
|
|
||||||
optionsPageMap.clear();
|
optionsPageMap.clear();
|
||||||
for (ILanguageSettingsProvider provider : presentedProviders) {
|
for (ILanguageSettingsProvider provider : presentedProviders) {
|
||||||
initializeOptionsPage(provider, cfgDescription);
|
initializeOptionsPage(provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
displaySelectedOptionPage();
|
displaySelectedOptionPage();
|
||||||
|
@ -663,9 +638,18 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
// renders better when using temporary
|
// renders better when using temporary
|
||||||
presentedProviders = providers;
|
presentedProviders = providers;
|
||||||
|
|
||||||
int pos = tableProviders.getSelectionIndex();
|
ILanguageSettingsProvider selectedProvider = getSelectedProvider();
|
||||||
|
String selectedId = selectedProvider!=null ? selectedProvider.getId() : null;
|
||||||
|
|
||||||
tableProvidersViewer.setInput(presentedProviders);
|
tableProvidersViewer.setInput(presentedProviders);
|
||||||
tableProviders.setSelection(pos);
|
if (selectedId!=null) {
|
||||||
|
for (int i=0; i<presentedProviders.size(); i++) {
|
||||||
|
if (selectedId.equals(presentedProviders.get(i).getId())) {
|
||||||
|
tableProviders.setSelection(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sortByName(List<ILanguageSettingsProvider> providers) {
|
private void sortByName(List<ILanguageSettingsProvider> providers) {
|
||||||
|
@ -688,11 +672,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private ICOptionPage createOptionsPage(ILanguageSettingsProvider provider, ICConfigurationDescription cfgDescription) {
|
private ICOptionPage createOptionsPage(ILanguageSettingsProvider provider) {
|
||||||
ICOptionPage optionsPage = null;
|
ICOptionPage optionsPage = null;
|
||||||
if (provider!=null) {
|
if (provider != null) {
|
||||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||||
if (rawProvider!=null) {
|
if (rawProvider != null) {
|
||||||
optionsPage = LanguageSettingsProviderAssociationManager.createOptionsPage(rawProvider);
|
optionsPage = LanguageSettingsProviderAssociationManager.createOptionsPage(rawProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -704,17 +688,17 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
return optionsPage;
|
return optionsPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializeOptionsPage(ILanguageSettingsProvider provider, ICConfigurationDescription cfgDescription) {
|
private void initializeOptionsPage(ILanguageSettingsProvider provider) {
|
||||||
ICOptionPage optionsPage = createOptionsPage(provider, cfgDescription);
|
ICOptionPage optionsPage = createOptionsPage(provider);
|
||||||
|
|
||||||
if (optionsPage!=null) {
|
if (optionsPage != null) {
|
||||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||||
boolean isEditableForProject = page.isForProject() && provider instanceof ILanguageSettingsEditableProvider;
|
boolean isEditableForProject = page.isForProject() && provider instanceof ILanguageSettingsEditableProvider;
|
||||||
boolean isEditableForPrefs = page.isForPrefs() && rawProvider instanceof ILanguageSettingsEditableProvider;
|
boolean isEditableForPrefs = page.isForPrefs() && rawProvider instanceof ILanguageSettingsEditableProvider;
|
||||||
boolean isEditable = isEditableForProject || isEditableForPrefs;
|
boolean isEditable = isEditableForProject || isEditableForPrefs;
|
||||||
compositeOptionsPage.setEnabled(isEditable);
|
compositeOptionsPage.setEnabled(isEditable);
|
||||||
|
|
||||||
String id = (provider!=null) ? provider.getId() : null;
|
String id = (provider != null) ? provider.getId() : null;
|
||||||
optionsPageMap.put(id, optionsPage);
|
optionsPageMap.put(id, optionsPage);
|
||||||
optionsPage.setContainer(page);
|
optionsPage.setContainer(page);
|
||||||
optionsPage.createControl(compositeOptionsPage);
|
optionsPage.createControl(compositeOptionsPage);
|
||||||
|
@ -729,43 +713,38 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
}
|
}
|
||||||
|
|
||||||
ILanguageSettingsProvider provider = getSelectedProvider();
|
ILanguageSettingsProvider provider = getSelectedProvider();
|
||||||
String id = (provider!=null) ? provider.getId() : null;
|
String id = (provider != null) ? provider.getId() : null;
|
||||||
|
|
||||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||||
|
|
||||||
currentOptionsPage = optionsPageMap.get(id);
|
currentOptionsPage = optionsPageMap.get(id);
|
||||||
|
|
||||||
|
if (!page.isForPrefs() ) {
|
||||||
boolean isChecked = tableProvidersViewer.getChecked(provider);
|
boolean isChecked = tableProvidersViewer.getChecked(provider);
|
||||||
if (!page.isForPrefs()) {
|
|
||||||
boolean isShared = isPresentedAsShared(provider);
|
boolean isShared = isPresentedAsShared(provider);
|
||||||
boolean isRawProviderEditable = rawProvider instanceof ILanguageSettingsEditableProvider;
|
boolean isRawProviderEditable = rawProvider instanceof ILanguageSettingsEditableProvider;
|
||||||
|
|
||||||
sharedProviderCheckBox.setSelection(isShared);
|
|
||||||
sharedProviderCheckBox.setEnabled(isChecked && isRawProviderEditable);
|
|
||||||
sharedProviderCheckBox.setVisible(provider != null);
|
sharedProviderCheckBox.setVisible(provider != null);
|
||||||
|
sharedProviderCheckBox.setEnabled(isChecked && isRawProviderEditable);
|
||||||
|
sharedProviderCheckBox.setSelection(isShared);
|
||||||
|
|
||||||
projectStorageCheckBox.setEnabled(!isShared && isChecked);
|
|
||||||
projectStorageCheckBox.setVisible(rawProvider instanceof LanguageSettingsSerializableProvider);
|
projectStorageCheckBox.setVisible(rawProvider instanceof LanguageSettingsSerializableProvider);
|
||||||
|
projectStorageCheckBox.setEnabled(isChecked && !isShared);
|
||||||
projectStorageCheckBox.setSelection(provider instanceof LanguageSettingsSerializableProvider
|
projectStorageCheckBox.setSelection(provider instanceof LanguageSettingsSerializableProvider
|
||||||
&& LanguageSettingsManager.isStoringEntriesInProjectArea((LanguageSettingsSerializableProvider) provider));
|
&& LanguageSettingsManager.isStoringEntriesInProjectArea((LanguageSettingsSerializableProvider) provider));
|
||||||
|
|
||||||
boolean needPreferencesLink = isShared && currentOptionsPage != null;
|
linkToWorkspacePreferences.setVisible(isShared && currentOptionsPage != null);
|
||||||
// TODO: message
|
linkToWorkspacePreferences.setEnabled(isChecked);
|
||||||
final String linkMsg = needPreferencesLink ? "Options of global providers below can be changed in <a href=\"workspace\">Workspace Settings</a>, Discovery Tab." : "";
|
|
||||||
linkWorkspacePreferences.setText(linkMsg);
|
|
||||||
linkWorkspacePreferences.pack();
|
|
||||||
linkWorkspacePreferences.setEnabled(isChecked);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentOptionsPage != null) {
|
if (currentOptionsPage != null) {
|
||||||
|
currentOptionsPage.setVisible(true);
|
||||||
|
|
||||||
boolean isEditableForProject = page.isForProject() && provider instanceof ILanguageSettingsEditableProvider;
|
boolean isEditableForProject = page.isForProject() && provider instanceof ILanguageSettingsEditableProvider;
|
||||||
boolean isEditableForPrefs = page.isForPrefs() && rawProvider instanceof ILanguageSettingsEditableProvider;
|
boolean isEditableForPrefs = page.isForPrefs() && rawProvider instanceof ILanguageSettingsEditableProvider;
|
||||||
boolean isEditable = isEditableForProject || isEditableForPrefs;
|
boolean isEditable = isEditableForProject || isEditableForPrefs;
|
||||||
currentOptionsPage.getControl().setEnabled(isEditable);
|
currentOptionsPage.getControl().setEnabled(isEditable);
|
||||||
currentOptionsPage.setVisible(true);
|
|
||||||
|
|
||||||
compositeOptionsPage.setEnabled(isEditable);
|
compositeOptionsPage.setEnabled(isEditable);
|
||||||
// compositeOptionsPage.layout(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -782,38 +761,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void saveCheckedProviders(Object selectedElement) {
|
|
||||||
if (page.isForProject()) {
|
|
||||||
Object[] checked = tableProvidersViewer.getCheckedElements();
|
|
||||||
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(checked.length);
|
|
||||||
for (Object element : checked) {
|
|
||||||
ILanguageSettingsProvider provider = (ILanguageSettingsProvider)element;
|
|
||||||
providers.add(provider);
|
|
||||||
}
|
|
||||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
|
||||||
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
|
|
||||||
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(providers);
|
|
||||||
|
|
||||||
if (selectedElement!=null) {
|
|
||||||
tableProvidersViewer.update(selectedElement, null);
|
|
||||||
if (selectedElement instanceof ILanguageSettingsProvider) {
|
|
||||||
ILanguageSettingsProvider selectedProvider = (ILanguageSettingsProvider) selectedElement;
|
|
||||||
initializeOptionsPage(selectedProvider, cfgDescription);
|
|
||||||
displaySelectedOptionPage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void disableButtons() {
|
private void disableButtons() {
|
||||||
// buttonSetEnabled(BUTTON_RENAME, false);
|
|
||||||
// buttonSetEnabled(BUTTON_RUN, false);
|
|
||||||
buttonSetEnabled(BUTTON_CLEAR, false);
|
buttonSetEnabled(BUTTON_CLEAR, false);
|
||||||
buttonSetEnabled(BUTTON_RESET, false);
|
buttonSetEnabled(BUTTON_RESET, false);
|
||||||
buttonSetEnabled(BUTTON_MOVE_UP, false);
|
buttonSetEnabled(BUTTON_MOVE_UP, false);
|
||||||
buttonSetEnabled(BUTTON_MOVE_DOWN, false);
|
buttonSetEnabled(BUTTON_MOVE_DOWN, false);
|
||||||
// buttonSetEnabled(BUTTON_CONFIGURE, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -829,7 +781,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
int pos = tableProviders.getSelectionIndex();
|
int pos = tableProviders.getSelectionIndex();
|
||||||
int count = tableProviders.getItemCount();
|
int count = tableProviders.getItemCount();
|
||||||
int last = count - 1;
|
int last = count - 1;
|
||||||
boolean isRangeOk = pos >= 0 && pos <= last;
|
boolean isRangeOk = (pos >= 0 && pos <= last);
|
||||||
|
|
||||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||||
boolean isAllowedClearing = rawProvider instanceof ILanguageSettingsEditableProvider && rawProvider instanceof LanguageSettingsSerializableProvider
|
boolean isAllowedClearing = rawProvider instanceof ILanguageSettingsEditableProvider && rawProvider instanceof LanguageSettingsSerializableProvider
|
||||||
|
@ -840,32 +792,22 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
canClear = canClear && !((LanguageSettingsSerializableProvider)rawProvider).isEmpty();
|
canClear = canClear && !((LanguageSettingsSerializableProvider)rawProvider).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean canReset = (canForProject && isReconfiguredForProject(provider)) ||
|
boolean canResetForProject = canForProject && isReconfiguredForProject(provider);
|
||||||
(canForWorkspace &&
|
boolean canResetForWorkspace = canForWorkspace &&
|
||||||
(rawProvider instanceof ILanguageSettingsEditableProvider
|
(rawProvider instanceof ILanguageSettingsEditableProvider
|
||||||
&& !LanguageSettingsManager.isEqualExtensionProvider(rawProvider, false))
|
&& !LanguageSettingsManager.isEqualExtensionProvider(rawProvider, false))
|
||||||
&& ( LanguageSettingsManager.getExtensionProviderIds().contains(rawProvider.getId()) )
|
&& ( LanguageSettingsManager.getExtensionProviderIds().contains(rawProvider.getId()) );
|
||||||
);
|
boolean canReset = canResetForProject || canResetForWorkspace;
|
||||||
|
|
||||||
boolean canMoveUp = canForProject && isRangeOk && pos!=0;
|
boolean canMoveUp = canForProject && isRangeOk && pos != 0;
|
||||||
boolean canMoveDown = canForProject && isRangeOk && pos!=last;
|
boolean canMoveDown = canForProject && isRangeOk && pos != last;
|
||||||
|
|
||||||
// buttonSetEnabled(BUTTON_RENAME, false);
|
|
||||||
// buttonSetEnabled(BUTTON_RUN, false);
|
|
||||||
buttonSetEnabled(BUTTON_CLEAR, canClear);
|
buttonSetEnabled(BUTTON_CLEAR, canClear);
|
||||||
buttonSetEnabled(BUTTON_RESET, canReset);
|
buttonSetEnabled(BUTTON_RESET, canReset);
|
||||||
buttonSetEnabled(BUTTON_MOVE_UP, canMoveUp);
|
buttonSetEnabled(BUTTON_MOVE_UP, canMoveUp);
|
||||||
buttonSetEnabled(BUTTON_MOVE_DOWN, canMoveDown);
|
buttonSetEnabled(BUTTON_MOVE_DOWN, canMoveDown);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Displays warning message - if any - for selected language settings entry.
|
|
||||||
*/
|
|
||||||
private void updateStatusLine() {
|
|
||||||
// IStatus status=null;
|
|
||||||
// fStatusLine.setErrorStatus(status);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle buttons
|
* Handle buttons
|
||||||
*/
|
*/
|
||||||
|
@ -874,12 +816,6 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
ILanguageSettingsProvider selectedProvider = getSelectedProvider();
|
ILanguageSettingsProvider selectedProvider = getSelectedProvider();
|
||||||
|
|
||||||
switch (buttonIndex) {
|
switch (buttonIndex) {
|
||||||
// case BUTTON_RENAME:
|
|
||||||
// performRename(selectedProvider);
|
|
||||||
// break;
|
|
||||||
// case BUTTON_RUN:
|
|
||||||
// performRun(selectedProvider);
|
|
||||||
// break;
|
|
||||||
case BUTTON_CLEAR:
|
case BUTTON_CLEAR:
|
||||||
performClear(selectedProvider);
|
performClear(selectedProvider);
|
||||||
break;
|
break;
|
||||||
|
@ -909,8 +845,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) rawProvider, false);
|
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) rawProvider, false);
|
||||||
if (newProvider != null) {
|
if (newProvider != null) {
|
||||||
replaceSelectedProvider(newProvider);
|
replaceSelectedProvider(newProvider);
|
||||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
initializeOptionsPage(newProvider);
|
||||||
initializeOptionsPage(newProvider, cfgDescription);
|
|
||||||
displaySelectedOptionPage();
|
displaySelectedOptionPage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -920,55 +855,61 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
|
|
||||||
private void performReset(ILanguageSettingsProvider selectedProvider) {
|
private void performReset(ILanguageSettingsProvider selectedProvider) {
|
||||||
String id = selectedProvider.getId();
|
String id = selectedProvider.getId();
|
||||||
ILanguageSettingsProvider newProvider = null;
|
|
||||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
|
||||||
|
|
||||||
|
ILanguageSettingsProvider newProvider = null;
|
||||||
if (page.isForPrefs()) {
|
if (page.isForPrefs()) {
|
||||||
newProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
|
newProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
|
||||||
if (newProvider == null) {
|
if (newProvider == null) {
|
||||||
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
|
Status status = new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, IStatus.ERROR, "Internal error happened, report application log to CDT team.",
|
||||||
|
new Exception("Internal Error getting copy of provider id="+id));
|
||||||
|
fStatusLine.setErrorStatus(status);
|
||||||
|
CUIPlugin.log(status);
|
||||||
}
|
}
|
||||||
replaceSelectedProvider(newProvider);
|
|
||||||
} else {
|
} else {
|
||||||
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||||
String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds();
|
String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds();
|
||||||
boolean isDefault = Arrays.asList(defaultIds).contains(id);
|
boolean isDefault = Arrays.asList(defaultIds).contains(id);
|
||||||
|
if (isDefault && !LanguageSettingsManager.isPreferShared(id)) {
|
||||||
if (isDefault) {
|
|
||||||
if (!LanguageSettingsManager.isPreferShared(id)) {
|
|
||||||
newProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
|
newProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
|
||||||
}
|
|
||||||
if (newProvider == null) {
|
if (newProvider == null) {
|
||||||
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
|
Status status = new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, IStatus.ERROR, "Internal error happened, report application log to CDT team.",
|
||||||
}
|
new Exception("Internal Error getting copy of provider id="+id));
|
||||||
if (providers.contains(selectedProvider)) {
|
fStatusLine.setErrorStatus(status);
|
||||||
// replace provider in the cfg list
|
CUIPlugin.log(status);
|
||||||
replaceSelectedProvider(newProvider);
|
|
||||||
} else {
|
|
||||||
// add provider to the cfg list
|
|
||||||
replaceSelectedProvider(newProvider);
|
|
||||||
tableProvidersViewer.setChecked(newProvider, true);
|
|
||||||
saveCheckedProviders(newProvider);
|
|
||||||
updateProvidersTable();
|
|
||||||
refreshItem(newProvider);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (providers.contains(selectedProvider)) {
|
|
||||||
// remove provider from the cfg list
|
|
||||||
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
|
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
|
||||||
replaceSelectedProvider(newProvider);
|
|
||||||
tableProvidersViewer.setChecked(newProvider, false);
|
|
||||||
saveCheckedProviders(newProvider);
|
|
||||||
updateProvidersTable();
|
|
||||||
refreshItem(newProvider);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
tableProvidersViewer.setChecked(selectedProvider, isDefault);
|
||||||
}
|
}
|
||||||
|
|
||||||
initializeOptionsPage(newProvider, cfgDescription);
|
if (newProvider != null) {
|
||||||
|
replaceSelectedProvider(newProvider);
|
||||||
|
initializeOptionsPage(newProvider);
|
||||||
displaySelectedOptionPage();
|
displaySelectedOptionPage();
|
||||||
updateButtons();
|
updateButtons();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void replaceSelectedProvider(ILanguageSettingsProvider newProvider) {
|
||||||
|
int pos = tableProviders.getSelectionIndex();
|
||||||
|
boolean isChecked = tableProvidersViewer.getChecked(tableProvidersViewer.getElementAt(pos));
|
||||||
|
|
||||||
|
presentedProviders.set(pos, newProvider);
|
||||||
|
tableProvidersViewer.refresh();
|
||||||
|
tableProvidersViewer.setChecked(newProvider, isChecked);
|
||||||
|
tableProviders.setSelection(pos);
|
||||||
|
tableProvidersViewer.refresh(newProvider);
|
||||||
|
|
||||||
|
saveCheckedProviders();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveCheckedProviders() {
|
||||||
|
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||||
|
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
|
||||||
|
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(getCheckedProviders());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isWorkingCopy(ILanguageSettingsProvider provider) {
|
private boolean isWorkingCopy(ILanguageSettingsProvider provider) {
|
||||||
boolean isWorkingCopy = false;
|
boolean isWorkingCopy = false;
|
||||||
|
@ -1002,14 +943,18 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
|
|
||||||
private void moveProvider(int oldPos, int newPos) {
|
private void moveProvider(int oldPos, int newPos) {
|
||||||
Collections.swap(presentedProviders, oldPos, newPos);
|
Collections.swap(presentedProviders, oldPos, newPos);
|
||||||
|
tableProvidersViewer.refresh();
|
||||||
|
tableProviders.showSelection();
|
||||||
|
|
||||||
updateProvidersTable();
|
saveCheckedProviders();
|
||||||
tableProviders.setSelection(newPos);
|
|
||||||
|
|
||||||
saveCheckedProviders(null);
|
|
||||||
updateButtons();
|
updateButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||||
|
private List<ILanguageSettingsProvider> getCheckedProviders() {
|
||||||
|
return (List)Arrays.asList(tableProvidersViewer.getCheckedElements());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when configuration changed
|
* Called when configuration changed
|
||||||
*/
|
*/
|
||||||
|
@ -1034,8 +979,8 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
}
|
}
|
||||||
|
|
||||||
// for Preference page initialize providers list just once as no configuration here to change
|
// for Preference page initialize providers list just once as no configuration here to change
|
||||||
// and re-initializing could ruins modified providers in case of switching tabs or pages
|
// and re-initializing could overwrite modified providers in case of switching tabs or pages
|
||||||
if (!page.isForPrefs() || presentedProviders==null) {
|
if (!page.isForPrefs() || presentedProviders == null) {
|
||||||
initializeProviders();
|
initializeProviders();
|
||||||
}
|
}
|
||||||
updateProvidersTable();
|
updateProvidersTable();
|
||||||
|
@ -1101,17 +1046,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void performApply(ICResourceDescription srcRcDescription, ICResourceDescription destRcDescription) {
|
protected void performApply(ICResourceDescription srcRcDescription, ICResourceDescription destRcDescription) {
|
||||||
// informOptionPages(true);
|
if (!page.isForPrefs()) {
|
||||||
|
|
||||||
if (page.isForPrefs()) {
|
|
||||||
try {
|
|
||||||
LanguageSettingsManager.setWorkspaceProviders(presentedProviders);
|
|
||||||
} catch (CoreException e) {
|
|
||||||
CUIPlugin.log("Error serializing workspace language settings providers", e);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
IResource rc = getResource();
|
|
||||||
|
|
||||||
ICConfigurationDescription sd = srcRcDescription.getConfiguration();
|
ICConfigurationDescription sd = srcRcDescription.getConfiguration();
|
||||||
ICConfigurationDescription dd = destRcDescription.getConfiguration();
|
ICConfigurationDescription dd = destRcDescription.getConfiguration();
|
||||||
if (sd instanceof ILanguageSettingsProvidersKeeper && dd instanceof ILanguageSettingsProvidersKeeper) {
|
if (sd instanceof ILanguageSettingsProvidersKeeper && dd instanceof ILanguageSettingsProvidersKeeper) {
|
||||||
|
@ -1121,26 +1056,13 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
}
|
}
|
||||||
|
|
||||||
performOK();
|
performOK();
|
||||||
|
|
||||||
|
trackInitialSettings();
|
||||||
|
updateData(getResDesc());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void performOK() {
|
protected void performOK() {
|
||||||
if (!page.isForPrefs()) {
|
|
||||||
// FIXME: for now only handles current configuration
|
|
||||||
ICResourceDescription rcDesc = getResDesc();
|
|
||||||
IResource rc = getResource();
|
|
||||||
ICConfigurationDescription cfgDescription = rcDesc.getConfiguration();
|
|
||||||
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
|
|
||||||
List<ILanguageSettingsProvider> destProviders = new ArrayList<ILanguageSettingsProvider>();
|
|
||||||
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
|
||||||
for (ILanguageSettingsProvider pro : providers) {
|
|
||||||
// TODO: clone
|
|
||||||
destProviders.add(pro);
|
|
||||||
}
|
|
||||||
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(destProviders);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Build Settings page
|
// Build Settings page
|
||||||
if (page.isForPrefs()) {
|
if (page.isForPrefs()) {
|
||||||
try {
|
try {
|
||||||
|
@ -1151,10 +1073,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
initializeProviders();
|
initializeProviders();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (page.isForProject() && enableProvidersCheckBox!=null) {
|
if (page.isForProject() && enableProvidersCheckBox != null) {
|
||||||
boolean enabled = enableProvidersCheckBox.getSelection();
|
boolean enabled = enableProvidersCheckBox.getSelection();
|
||||||
if (masterPropertyPage!=null)
|
if (masterPropertyPage != null) {
|
||||||
enabled = masterPropertyPage.isLanguageSettingsProvidersEnabled();
|
enabled = masterPropertyPage.isLanguageSettingsProvidersEnabled();
|
||||||
|
}
|
||||||
ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(page.getProject(), enabled);
|
ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(page.getProject(), enabled);
|
||||||
enableProvidersCheckBox.setSelection(enabled);
|
enableProvidersCheckBox.setSelection(enabled);
|
||||||
}
|
}
|
||||||
|
@ -1167,9 +1090,6 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
CUIPlugin.log("Error applying options page", e);
|
CUIPlugin.log("Error applying options page", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
trackInitialSettings();
|
|
||||||
updateData(getResDesc());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1180,16 +1100,6 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
return page.isForPrefs() || page.isForProject();
|
return page.isForPrefs() || page.isForProject();
|
||||||
}
|
}
|
||||||
|
|
||||||
private ILanguageSettingsProvider findRawProvider(String id, List<ILanguageSettingsProvider> providers) {
|
|
||||||
for (ILanguageSettingsProvider provider : providers) {
|
|
||||||
if (provider.getId().equals(id)) {
|
|
||||||
provider = LanguageSettingsManager.getRawProvider(provider);
|
|
||||||
return provider;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ILanguageSettingsProvider findProvider(String id, List<ILanguageSettingsProvider> providers) {
|
private ILanguageSettingsProvider findProvider(String id, List<ILanguageSettingsProvider> providers) {
|
||||||
for (ILanguageSettingsProvider provider : providers) {
|
for (ILanguageSettingsProvider provider : providers) {
|
||||||
if (provider.getId().equals(id)) {
|
if (provider.getId().equals(id)) {
|
||||||
|
@ -1203,30 +1113,4 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
||||||
return findProvider(id, presentedProviders);
|
return findProvider(id, presentedProviders);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getProviderIndex(String id, List<ILanguageSettingsProvider> providers) {
|
|
||||||
int pos = 0;
|
|
||||||
for (ILanguageSettingsProvider p : providers) {
|
|
||||||
if (p.getId().equals(id))
|
|
||||||
return pos;
|
|
||||||
pos++;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// private void informOptionPages(boolean apply) {
|
|
||||||
// Collection<ICOptionPage> pages = optionsPageMap.values();
|
|
||||||
// for (ICOptionPage dynamicPage : pages) {
|
|
||||||
// if (dynamicPage!=null && dynamicPage.isValid() && dynamicPage.getControl() != null) {
|
|
||||||
// try {
|
|
||||||
// if (apply)
|
|
||||||
// dynamicPage.performApply(new NullProgressMonitor());
|
|
||||||
// else
|
|
||||||
// dynamicPage.performDefaults();
|
|
||||||
// } catch (CoreException e) {
|
|
||||||
// CUIPlugin.log("ErrorParsTab.error.OnApplyingSettings", e);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -195,7 +195,6 @@ public class Messages extends NLS {
|
||||||
public static String LanguageSettingsProviderTab_Configure;
|
public static String LanguageSettingsProviderTab_Configure;
|
||||||
public static String LanguageSettingsProviderTab_ErrorPerformingDefaults;
|
public static String LanguageSettingsProviderTab_ErrorPerformingDefaults;
|
||||||
public static String LanguageSettingsProviderTab_ProviderOptions;
|
public static String LanguageSettingsProviderTab_ProviderOptions;
|
||||||
// public static String LanguageSettingsProviderTab_Run;
|
|
||||||
public static String LanguageSettingsProviderTab_SettingEntries;
|
public static String LanguageSettingsProviderTab_SettingEntries;
|
||||||
public static String LanguageSettingsProviderTab_SettingEntriesTooltip;
|
public static String LanguageSettingsProviderTab_SettingEntriesTooltip;
|
||||||
public static String LanguageSettingsProviderTab_ShowEntries;
|
public static String LanguageSettingsProviderTab_ShowEntries;
|
||||||
|
|
|
@ -174,7 +174,6 @@ LanguageSettingsProviderTab_Clear=Clear Entries
|
||||||
LanguageSettingsProviderTab_Configure=Configure
|
LanguageSettingsProviderTab_Configure=Configure
|
||||||
LanguageSettingsProviderTab_ErrorPerformingDefaults=Error restoring defaults for language settings providers
|
LanguageSettingsProviderTab_ErrorPerformingDefaults=Error restoring defaults for language settings providers
|
||||||
LanguageSettingsProviderTab_ProviderOptions=Language Settings Provider Options
|
LanguageSettingsProviderTab_ProviderOptions=Language Settings Provider Options
|
||||||
#LanguageSettingsProviderTab_Run=Run
|
|
||||||
LanguageSettingsProviderTab_SettingEntries=Setting Entries
|
LanguageSettingsProviderTab_SettingEntries=Setting Entries
|
||||||
LanguageSettingsProviderTab_SettingEntriesTooltip=Setting Entries
|
LanguageSettingsProviderTab_SettingEntriesTooltip=Setting Entries
|
||||||
LanguageSettingsProviderTab_ShowEntries=Show Entries
|
LanguageSettingsProviderTab_ShowEntries=Show Entries
|
||||||
|
|
Loading…
Add table
Reference in a new issue