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;
|
||||
|
||||
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_DOWN = 5;
|
||||
|
||||
private final static String[] BUTTON_LABELS = {
|
||||
ADD_STR,
|
||||
EDIT_STR,
|
||||
DEL_STR,
|
||||
null,
|
||||
MOVEUP_STR,
|
||||
MOVEDOWN_STR,
|
||||
};
|
||||
private final static String[] BUTTON_LABELS = new String[6];
|
||||
{
|
||||
BUTTON_LABELS[BUTTON_ADD] = ADD_STR;
|
||||
BUTTON_LABELS[BUTTON_EDIT] = EDIT_STR;
|
||||
BUTTON_LABELS[BUTTON_DELETE] = DEL_STR;
|
||||
BUTTON_LABELS[BUTTON_MOVE_UP] = MOVEUP_STR;
|
||||
BUTTON_LABELS[BUTTON_MOVE_DOWN] = MOVEDOWN_STR;
|
||||
}
|
||||
|
||||
private static final String CLEAR_STR = Messages.LanguageSettingsProviderTab_Clear;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
private void createTreeForLanguages(Composite comp) {
|
||||
treeLanguages = new Tree(comp, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL);
|
||||
private void trackInitialSettings() {
|
||||
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.setHeaderVisible(true);
|
||||
|
||||
|
@ -347,8 +361,8 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
|||
});
|
||||
}
|
||||
|
||||
private void createTreeForEntries(Composite comp) {
|
||||
treeEntries = new Tree(comp, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||
private void createTreeForEntries(Composite parent) {
|
||||
treeEntries = new Tree(parent, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||
treeEntries.setLayoutData(new GridData(GridData.FILL_VERTICAL));
|
||||
treeEntries.setHeaderVisible(true);
|
||||
treeEntries.setLinesVisible(true);
|
||||
|
@ -394,43 +408,24 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
|||
|
||||
}
|
||||
|
||||
private void trackInitialSettings() {
|
||||
if (page.isForPrefs()) {
|
||||
// AG TODO
|
||||
} else {
|
||||
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 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);
|
||||
}
|
||||
|
||||
@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();
|
||||
|
||||
// Status line
|
||||
fStatusLine = new StatusMessageLine(usercomp, SWT.LEFT, 2);
|
||||
|
||||
// "Show built-ins" checkbox
|
||||
private void createBuiltInsCheckBox() {
|
||||
builtInCheckBox = setupCheck(usercomp, Messages.AbstractLangsListTab_ShowBuiltin, 1, GridData.FILL_HORIZONTAL);
|
||||
builtInCheckBox.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
|
@ -440,8 +435,9 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
|||
});
|
||||
builtInCheckBox.setSelection(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.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
|
@ -473,28 +469,34 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
|||
// display but disable the checkbox for file/folder resource
|
||||
enableProvidersCheckBox.setEnabled(page.isForProject());
|
||||
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);
|
||||
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) {
|
||||
sashFormEntries.setEnabled(enable);
|
||||
treeLanguages.setEnabled(enable);
|
||||
|
@ -778,16 +780,6 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
|
|||
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) {
|
||||
if (selectedProvider instanceof ILanguageSettingsEditableProvider && selectedEntry != null) {
|
||||
ICConfigurationDescription cfgDecsription = getConfigurationDescription();
|
||||
|
@ -1107,15 +1099,4 @@ providers: for (ILanguageSettingsProvider provider : oldProviders) {
|
|||
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;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
* Contributors:
|
||||
* Andrew Gvozdev - Initial API and implementation
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.cdt.internal.ui.language.settings.providers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -23,6 +22,8 @@ import java.util.Map;
|
|||
import org.eclipse.core.resources.IResource;
|
||||
import org.eclipse.core.runtime.Assert;
|
||||
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.viewers.ArrayContentProvider;
|
||||
import org.eclipse.jface.viewers.CheckStateChangedEvent;
|
||||
|
@ -74,38 +75,17 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
// TODO: generalize
|
||||
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 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_RESET = 1;
|
||||
// there is a separator instead of button #2
|
||||
private static final int BUTTON_MOVE_UP = 3;
|
||||
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 SashForm sashFormConfigure;
|
||||
private SashForm sashFormProviders;
|
||||
|
||||
private Table tableProviders;
|
||||
private CheckboxTableViewer tableProvidersViewer;
|
||||
|
@ -117,7 +97,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
private StatusMessageLine fStatusLine;
|
||||
|
||||
private Button sharedProviderCheckBox = null;
|
||||
private Link linkWorkspacePreferences = null;
|
||||
private Link linkToWorkspacePreferences = null;
|
||||
private Button projectStorageCheckBox = null;
|
||||
|
||||
private Page_LanguageSettingsProviders masterPropertyPage = null;
|
||||
|
@ -152,6 +132,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider)rawProvider, true);
|
||||
if (newProvider != null) {
|
||||
replaceSelectedProvider(newProvider);
|
||||
// Warning: Do not initializeOptionsPage() here as the method can be called from an existing page
|
||||
}
|
||||
|
||||
return newProvider;
|
||||
|
@ -160,16 +141,22 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
private boolean isReconfiguredForProject(ILanguageSettingsProvider provider) {
|
||||
String id = provider.getId();
|
||||
|
||||
// check for the provider mismatch in configuration list vs. default list from the tool-chain
|
||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||
String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds();
|
||||
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;
|
||||
}
|
||||
|
||||
// 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
|
||||
if (providers.contains(provider) && LanguageSettingsManager.isPreferShared(id) != LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
||||
if (LanguageSettingsManager.isPreferShared(id) != LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -182,11 +169,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
|
||||
private boolean isEditedForProject(ILanguageSettingsProvider provider) {
|
||||
String id = provider.getId();
|
||||
|
||||
// check for the provider mismatch in configuration list vs. initial list
|
||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||
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);
|
||||
if ((initialProvider != null) != providers.contains(provider)) {
|
||||
return true;
|
||||
|
@ -213,7 +200,6 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
return overlayKeys;
|
||||
}
|
||||
|
||||
|
||||
String[] overlayKeys = super.getOverlayKeys(provider);
|
||||
|
||||
if (page.isForProject()) {
|
||||
|
@ -294,7 +280,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
}
|
||||
|
||||
private void trackInitialSettings() {
|
||||
if (page.isForProject()) {
|
||||
if (!page.isForPrefs()) {
|
||||
ICConfigurationDescription[] cfgDescriptions = page.getCfgsEditable();
|
||||
for (ICConfigurationDescription cfgDescription : cfgDescriptions) {
|
||||
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
|
||||
|
@ -310,6 +296,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
@Override
|
||||
public void createControls(Composite parent) {
|
||||
super.createControls(parent);
|
||||
|
||||
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
|
||||
|
@ -321,16 +308,31 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
|
||||
trackInitialSettings();
|
||||
|
||||
// SashForms for each mode
|
||||
createConfigureSashForm();
|
||||
createSashForm();
|
||||
|
||||
// Status line
|
||||
fStatusLine = new StatusMessageLine(usercomp, SWT.LEFT, 2);
|
||||
if (!page.isForPrefs()) {
|
||||
createEnableProvidersCheckBox();
|
||||
}
|
||||
|
||||
String[] buttonLabels;
|
||||
if (page.isForPrefs()) {
|
||||
initButtons(BUTTON_LABELS_PREF);
|
||||
|
||||
buttonLabels = new String[2];
|
||||
buttonLabels[BUTTON_CLEAR] = CLEAR_STR;
|
||||
buttonLabels[BUTTON_RESET] = RESET_STR;
|
||||
} 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
|
||||
enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL);
|
||||
enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() {
|
||||
|
@ -350,35 +352,39 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
|
||||
}
|
||||
enableControls(enabled);
|
||||
updateStatusLine();
|
||||
}
|
||||
});
|
||||
|
||||
if (masterPropertyPage!=null)
|
||||
if (masterPropertyPage!=null) {
|
||||
enableProvidersCheckBox.setSelection(masterPropertyPage.isLanguageSettingsProvidersEnabled());
|
||||
else
|
||||
} else {
|
||||
enableProvidersCheckBox.setSelection(ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(page.getProject()));
|
||||
}
|
||||
// display but disable the checkbox for file/folder resource
|
||||
enableProvidersCheckBox.setEnabled(page.isForProject());
|
||||
enableControls(enableProvidersCheckBox.getSelection());
|
||||
|
||||
initButtons(BUTTON_LABELS_PROJECT);
|
||||
}
|
||||
updateData(getResDesc());
|
||||
}
|
||||
|
||||
private void createConfigureSashForm() {
|
||||
// SashForm for Configure
|
||||
sashFormConfigure = new SashForm(usercomp, SWT.VERTICAL);
|
||||
private void createSashForm() {
|
||||
sashFormProviders = new SashForm(usercomp, SWT.VERTICAL);
|
||||
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
|
||||
Composite compositeSashForm = new Composite(sashFormConfigure, SWT.BORDER | SWT.SINGLE);
|
||||
compositeSashForm.setLayout(new GridLayout());
|
||||
createTreeForProviders(sashFormProviders);
|
||||
createOptionsPane(sashFormProviders);
|
||||
|
||||
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
|
||||
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.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
|
@ -394,134 +400,140 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
tableProvidersViewer.addCheckStateListener(new ICheckStateListener() {
|
||||
@Override
|
||||
public void checkStateChanged(CheckStateChangedEvent event) {
|
||||
// TODO: clean-up - too many manipulations in this method
|
||||
|
||||
ILanguageSettingsProvider provider = (ILanguageSettingsProvider) event.getElement();
|
||||
saveCheckedProviders(provider);
|
||||
|
||||
int pos = presentedProviders.indexOf(provider);
|
||||
tableProviders.setSelection(pos);
|
||||
ILanguageSettingsProvider checkedProvider = (ILanguageSettingsProvider) event.getElement();
|
||||
String id = checkedProvider.getId();
|
||||
ILanguageSettingsProvider newProvider = null;
|
||||
|
||||
if (event.getChecked()) {
|
||||
if (LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
||||
if (!LanguageSettingsManager.isPreferShared(provider.getId())) {
|
||||
// Switch to non-shared provider instance
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
if (LanguageSettingsManager.isWorkspaceProvider(checkedProvider) && !LanguageSettingsManager.isPreferShared(id)) {
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(checkedProvider);
|
||||
if (rawProvider instanceof ILanguageSettingsEditableProvider) {
|
||||
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) rawProvider, false);
|
||||
if (newProvider != null) {
|
||||
provider = newProvider;
|
||||
replaceSelectedProvider(provider);
|
||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||
initializeOptionsPage(provider, cfgDescription);
|
||||
}
|
||||
}
|
||||
newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) rawProvider, false);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
||||
provider = LanguageSettingsManager.getWorkspaceProvider(provider.getId());
|
||||
replaceSelectedProvider(provider);
|
||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||
initializeOptionsPage(provider, cfgDescription);
|
||||
if (!LanguageSettingsManager.isWorkspaceProvider(checkedProvider)) {
|
||||
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
tableProvidersViewer.update(provider, null);
|
||||
updateButtons();
|
||||
}});
|
||||
|
||||
createOptionsControl();
|
||||
|
||||
sashFormConfigure.setWeights(DEFAULT_CONFIGURE_SASH_WEIGHTS);
|
||||
enableSashForm(sashFormConfigure, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Link createLinkToPreferences(final Composite parent, int span) {
|
||||
Link link = new Link(parent, SWT.NONE);
|
||||
private void createLinkToPreferences(final Composite parent, int span) {
|
||||
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();
|
||||
gd.horizontalSpan = span;
|
||||
link.setLayoutData(gd);
|
||||
linkToWorkspacePreferences.setLayoutData(gd);
|
||||
|
||||
link.addListener(SWT.Selection, new Listener() {
|
||||
linkToWorkspacePreferences.addListener(SWT.Selection, new Listener() {
|
||||
@Override
|
||||
public void handleEvent(Event event) {
|
||||
// Use event.text to tell which link was used
|
||||
PreferencesUtil.createPreferenceDialogOn(parent.getShell(), WORKSPACE_PREFERENCE_PAGE, null, null).open();
|
||||
}
|
||||
});
|
||||
|
||||
return link;
|
||||
}
|
||||
|
||||
// Called from globalProviderCheckBox listener
|
||||
private ILanguageSettingsProvider toggleGlobalProvider(ILanguageSettingsProvider oldProvider, boolean toGlobal) {
|
||||
private ILanguageSettingsProvider toggleGlobalProvider(ILanguageSettingsProvider provider, boolean toGlobal) {
|
||||
ILanguageSettingsProvider newProvider = null;
|
||||
|
||||
String id = oldProvider.getId();
|
||||
String id = provider.getId();
|
||||
if (toGlobal) {
|
||||
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
|
||||
} else {
|
||||
// Local provider instance chosen
|
||||
// Toggle to configuration-owned provider
|
||||
try {
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(oldProvider);
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
if (rawProvider instanceof ILanguageSettingsEditableProvider) {
|
||||
newProvider = ((ILanguageSettingsEditableProvider) rawProvider).cloneShallow();
|
||||
}
|
||||
} catch (CloneNotSupportedException e) {
|
||||
CUIPlugin.log("Error cloning provider " + oldProvider.getId(), e);
|
||||
CUIPlugin.log("Error cloning provider " + id, e);
|
||||
}
|
||||
}
|
||||
if (newProvider != null) {
|
||||
replaceSelectedProvider(newProvider);
|
||||
|
||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||
initializeOptionsPage(newProvider, cfgDescription);
|
||||
initializeOptionsPage(newProvider);
|
||||
displaySelectedOptionPage();
|
||||
updateButtons();
|
||||
} else {
|
||||
newProvider = oldProvider;
|
||||
newProvider = provider;
|
||||
}
|
||||
|
||||
return newProvider;
|
||||
}
|
||||
|
||||
private void replaceSelectedProvider(ILanguageSettingsProvider newProvider) {
|
||||
int pos = tableProviders.getSelectionIndex();
|
||||
presentedProviders.set(pos, newProvider);
|
||||
tableProvidersViewer.setInput(presentedProviders);
|
||||
tableProviders.setSelection(pos);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh provider item in the table and update buttons.
|
||||
* This method is intended for use by an Options Page of the provider.
|
||||
*
|
||||
* @param provider - provider item in the table to refresh.
|
||||
*/
|
||||
public void refreshItem(ILanguageSettingsProvider provider) {
|
||||
tableProvidersViewer.refresh(provider);
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
private void createOptionsControl() {
|
||||
groupOptionsPage = new Group(sashFormConfigure, SWT.SHADOW_ETCHED_IN);
|
||||
private void createOptionsPane(Composite parent) {
|
||||
groupOptionsPage = new Group(parent, SWT.SHADOW_ETCHED_IN);
|
||||
groupOptionsPage.setText("Language Settings Provider Options");
|
||||
groupOptionsPage.setLayout(new GridLayout(2, false));
|
||||
|
||||
if (!page.isForPrefs()) {
|
||||
if (sharedProviderCheckBox==null) {
|
||||
sharedProviderCheckBox = new Button(groupOptionsPage, SWT.CHECK);
|
||||
createSharedProviderCheckBox(groupOptionsPage);
|
||||
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.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
|
@ -529,6 +541,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
boolean isGlobal = sharedProviderCheckBox.getSelection();
|
||||
ILanguageSettingsProvider provider = getSelectedProvider();
|
||||
if (isGlobal != LanguageSettingsManager.isWorkspaceProvider(provider)) {
|
||||
// globality changed
|
||||
provider = toggleGlobalProvider(provider, isGlobal);
|
||||
}
|
||||
projectStorageCheckBox.setSelection(provider instanceof LanguageSettingsSerializableProvider
|
||||
|
@ -539,49 +552,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
public void widgetDefaultSelected(SelectionEvent 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) {
|
||||
sashFormConfigure.setEnabled(enable);
|
||||
sashFormProviders.setEnabled(enable);
|
||||
tableProviders.setEnabled(enable);
|
||||
compositeOptionsPage.setEnabled(enable);
|
||||
|
||||
|
@ -598,7 +573,7 @@ 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() {
|
||||
ILanguageSettingsProvider selectedProvider = getSelectedProvider();
|
||||
|
@ -626,7 +601,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
|
||||
optionsPageMap.clear();
|
||||
for (ILanguageSettingsProvider provider : presentedProviders) {
|
||||
initializeOptionsPage(provider, cfgDescription);
|
||||
initializeOptionsPage(provider);
|
||||
}
|
||||
|
||||
displaySelectedOptionPage();
|
||||
|
@ -663,9 +638,18 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
// renders better when using temporary
|
||||
presentedProviders = providers;
|
||||
|
||||
int pos = tableProviders.getSelectionIndex();
|
||||
ILanguageSettingsProvider selectedProvider = getSelectedProvider();
|
||||
String selectedId = selectedProvider!=null ? selectedProvider.getId() : null;
|
||||
|
||||
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) {
|
||||
|
@ -688,7 +672,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
});
|
||||
}
|
||||
|
||||
private ICOptionPage createOptionsPage(ILanguageSettingsProvider provider, ICConfigurationDescription cfgDescription) {
|
||||
private ICOptionPage createOptionsPage(ILanguageSettingsProvider provider) {
|
||||
ICOptionPage optionsPage = null;
|
||||
if (provider != null) {
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
|
@ -704,8 +688,8 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
return optionsPage;
|
||||
}
|
||||
|
||||
private void initializeOptionsPage(ILanguageSettingsProvider provider, ICConfigurationDescription cfgDescription) {
|
||||
ICOptionPage optionsPage = createOptionsPage(provider, cfgDescription);
|
||||
private void initializeOptionsPage(ILanguageSettingsProvider provider) {
|
||||
ICOptionPage optionsPage = createOptionsPage(provider);
|
||||
|
||||
if (optionsPage != null) {
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
|
@ -735,37 +719,32 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
|
||||
currentOptionsPage = optionsPageMap.get(id);
|
||||
|
||||
boolean isChecked = tableProvidersViewer.getChecked(provider);
|
||||
if (!page.isForPrefs() ) {
|
||||
boolean isChecked = tableProvidersViewer.getChecked(provider);
|
||||
boolean isShared = isPresentedAsShared(provider);
|
||||
boolean isRawProviderEditable = rawProvider instanceof ILanguageSettingsEditableProvider;
|
||||
|
||||
sharedProviderCheckBox.setSelection(isShared);
|
||||
sharedProviderCheckBox.setEnabled(isChecked && isRawProviderEditable);
|
||||
sharedProviderCheckBox.setVisible(provider != null);
|
||||
sharedProviderCheckBox.setEnabled(isChecked && isRawProviderEditable);
|
||||
sharedProviderCheckBox.setSelection(isShared);
|
||||
|
||||
projectStorageCheckBox.setEnabled(!isShared && isChecked);
|
||||
projectStorageCheckBox.setVisible(rawProvider instanceof LanguageSettingsSerializableProvider);
|
||||
projectStorageCheckBox.setEnabled(isChecked && !isShared);
|
||||
projectStorageCheckBox.setSelection(provider instanceof LanguageSettingsSerializableProvider
|
||||
&& LanguageSettingsManager.isStoringEntriesInProjectArea((LanguageSettingsSerializableProvider) provider));
|
||||
|
||||
boolean needPreferencesLink = isShared && currentOptionsPage != null;
|
||||
// TODO: message
|
||||
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);
|
||||
linkToWorkspacePreferences.setVisible(isShared && currentOptionsPage != null);
|
||||
linkToWorkspacePreferences.setEnabled(isChecked);
|
||||
}
|
||||
|
||||
if (currentOptionsPage != null) {
|
||||
currentOptionsPage.setVisible(true);
|
||||
|
||||
boolean isEditableForProject = page.isForProject() && provider instanceof ILanguageSettingsEditableProvider;
|
||||
boolean isEditableForPrefs = page.isForPrefs() && rawProvider instanceof ILanguageSettingsEditableProvider;
|
||||
boolean isEditable = isEditableForProject || isEditableForPrefs;
|
||||
currentOptionsPage.getControl().setEnabled(isEditable);
|
||||
currentOptionsPage.setVisible(true);
|
||||
|
||||
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() {
|
||||
// buttonSetEnabled(BUTTON_RENAME, false);
|
||||
// buttonSetEnabled(BUTTON_RUN, false);
|
||||
buttonSetEnabled(BUTTON_CLEAR, false);
|
||||
buttonSetEnabled(BUTTON_RESET, false);
|
||||
buttonSetEnabled(BUTTON_MOVE_UP, false);
|
||||
buttonSetEnabled(BUTTON_MOVE_DOWN, false);
|
||||
// buttonSetEnabled(BUTTON_CONFIGURE, false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -829,7 +781,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
int pos = tableProviders.getSelectionIndex();
|
||||
int count = tableProviders.getItemCount();
|
||||
int last = count - 1;
|
||||
boolean isRangeOk = pos >= 0 && pos <= last;
|
||||
boolean isRangeOk = (pos >= 0 && pos <= last);
|
||||
|
||||
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
|
||||
boolean isAllowedClearing = rawProvider instanceof ILanguageSettingsEditableProvider && rawProvider instanceof LanguageSettingsSerializableProvider
|
||||
|
@ -840,32 +792,22 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
canClear = canClear && !((LanguageSettingsSerializableProvider)rawProvider).isEmpty();
|
||||
}
|
||||
|
||||
boolean canReset = (canForProject && isReconfiguredForProject(provider)) ||
|
||||
(canForWorkspace &&
|
||||
boolean canResetForProject = canForProject && isReconfiguredForProject(provider);
|
||||
boolean canResetForWorkspace = canForWorkspace &&
|
||||
(rawProvider instanceof ILanguageSettingsEditableProvider
|
||||
&& !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 canMoveDown = canForProject && isRangeOk && pos != last;
|
||||
|
||||
// buttonSetEnabled(BUTTON_RENAME, false);
|
||||
// buttonSetEnabled(BUTTON_RUN, false);
|
||||
buttonSetEnabled(BUTTON_CLEAR, canClear);
|
||||
buttonSetEnabled(BUTTON_RESET, canReset);
|
||||
buttonSetEnabled(BUTTON_MOVE_UP, canMoveUp);
|
||||
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
|
||||
*/
|
||||
|
@ -874,12 +816,6 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
ILanguageSettingsProvider selectedProvider = getSelectedProvider();
|
||||
|
||||
switch (buttonIndex) {
|
||||
// case BUTTON_RENAME:
|
||||
// performRename(selectedProvider);
|
||||
// break;
|
||||
// case BUTTON_RUN:
|
||||
// performRun(selectedProvider);
|
||||
// break;
|
||||
case BUTTON_CLEAR:
|
||||
performClear(selectedProvider);
|
||||
break;
|
||||
|
@ -909,8 +845,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
ILanguageSettingsEditableProvider newProvider = LanguageSettingsManager.getProviderCopy((ILanguageSettingsEditableProvider) rawProvider, false);
|
||||
if (newProvider != null) {
|
||||
replaceSelectedProvider(newProvider);
|
||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||
initializeOptionsPage(newProvider, cfgDescription);
|
||||
initializeOptionsPage(newProvider);
|
||||
displaySelectedOptionPage();
|
||||
}
|
||||
}
|
||||
|
@ -920,55 +855,61 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
|
||||
private void performReset(ILanguageSettingsProvider selectedProvider) {
|
||||
String id = selectedProvider.getId();
|
||||
ILanguageSettingsProvider newProvider = null;
|
||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||
|
||||
ILanguageSettingsProvider newProvider = null;
|
||||
if (page.isForPrefs()) {
|
||||
newProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
|
||||
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 {
|
||||
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
|
||||
ICConfigurationDescription cfgDescription = getConfigurationDescription();
|
||||
String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds();
|
||||
boolean isDefault = Arrays.asList(defaultIds).contains(id);
|
||||
|
||||
if (isDefault) {
|
||||
if (!LanguageSettingsManager.isPreferShared(id)) {
|
||||
if (isDefault && !LanguageSettingsManager.isPreferShared(id)) {
|
||||
newProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
|
||||
}
|
||||
if (newProvider == null) {
|
||||
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
|
||||
}
|
||||
if (providers.contains(selectedProvider)) {
|
||||
// replace provider in the cfg list
|
||||
replaceSelectedProvider(newProvider);
|
||||
} else {
|
||||
// add provider to the cfg list
|
||||
replaceSelectedProvider(newProvider);
|
||||
tableProvidersViewer.setChecked(newProvider, true);
|
||||
saveCheckedProviders(newProvider);
|
||||
updateProvidersTable();
|
||||
refreshItem(newProvider);
|
||||
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);
|
||||
}
|
||||
} else {
|
||||
if (providers.contains(selectedProvider)) {
|
||||
// remove provider from the cfg list
|
||||
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();
|
||||
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) {
|
||||
boolean isWorkingCopy = false;
|
||||
|
@ -1002,14 +943,18 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
|
||||
private void moveProvider(int oldPos, int newPos) {
|
||||
Collections.swap(presentedProviders, oldPos, newPos);
|
||||
tableProvidersViewer.refresh();
|
||||
tableProviders.showSelection();
|
||||
|
||||
updateProvidersTable();
|
||||
tableProviders.setSelection(newPos);
|
||||
|
||||
saveCheckedProviders(null);
|
||||
saveCheckedProviders();
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
private List<ILanguageSettingsProvider> getCheckedProviders() {
|
||||
return (List)Arrays.asList(tableProvidersViewer.getCheckedElements());
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when configuration changed
|
||||
*/
|
||||
|
@ -1034,7 +979,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
}
|
||||
|
||||
// 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) {
|
||||
initializeProviders();
|
||||
}
|
||||
|
@ -1101,17 +1046,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
|
||||
@Override
|
||||
protected void performApply(ICResourceDescription srcRcDescription, ICResourceDescription destRcDescription) {
|
||||
// informOptionPages(true);
|
||||
|
||||
if (page.isForPrefs()) {
|
||||
try {
|
||||
LanguageSettingsManager.setWorkspaceProviders(presentedProviders);
|
||||
} catch (CoreException e) {
|
||||
CUIPlugin.log("Error serializing workspace language settings providers", e);
|
||||
}
|
||||
} else {
|
||||
IResource rc = getResource();
|
||||
|
||||
if (!page.isForPrefs()) {
|
||||
ICConfigurationDescription sd = srcRcDescription.getConfiguration();
|
||||
ICConfigurationDescription dd = destRcDescription.getConfiguration();
|
||||
if (sd instanceof ILanguageSettingsProvidersKeeper && dd instanceof ILanguageSettingsProvidersKeeper) {
|
||||
|
@ -1121,26 +1056,13 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
}
|
||||
|
||||
performOK();
|
||||
|
||||
trackInitialSettings();
|
||||
updateData(getResDesc());
|
||||
}
|
||||
|
||||
@Override
|
||||
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
|
||||
if (page.isForPrefs()) {
|
||||
try {
|
||||
|
@ -1153,8 +1075,9 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
|
||||
if (page.isForProject() && enableProvidersCheckBox != null) {
|
||||
boolean enabled = enableProvidersCheckBox.getSelection();
|
||||
if (masterPropertyPage!=null)
|
||||
if (masterPropertyPage != null) {
|
||||
enabled = masterPropertyPage.isLanguageSettingsProvidersEnabled();
|
||||
}
|
||||
ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(page.getProject(), enabled);
|
||||
enableProvidersCheckBox.setSelection(enabled);
|
||||
}
|
||||
|
@ -1167,9 +1090,6 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
CUIPlugin.log("Error applying options page", e);
|
||||
}
|
||||
}
|
||||
|
||||
trackInitialSettings();
|
||||
updateData(getResDesc());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1180,16 +1100,6 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
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) {
|
||||
for (ILanguageSettingsProvider provider : providers) {
|
||||
if (provider.getId().equals(id)) {
|
||||
|
@ -1203,30 +1113,4 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
|
|||
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_ErrorPerformingDefaults;
|
||||
public static String LanguageSettingsProviderTab_ProviderOptions;
|
||||
// public static String LanguageSettingsProviderTab_Run;
|
||||
public static String LanguageSettingsProviderTab_SettingEntries;
|
||||
public static String LanguageSettingsProviderTab_SettingEntriesTooltip;
|
||||
public static String LanguageSettingsProviderTab_ShowEntries;
|
||||
|
|
|
@ -174,7 +174,6 @@ LanguageSettingsProviderTab_Clear=Clear Entries
|
|||
LanguageSettingsProviderTab_Configure=Configure
|
||||
LanguageSettingsProviderTab_ErrorPerformingDefaults=Error restoring defaults for language settings providers
|
||||
LanguageSettingsProviderTab_ProviderOptions=Language Settings Provider Options
|
||||
#LanguageSettingsProviderTab_Run=Run
|
||||
LanguageSettingsProviderTab_SettingEntries=Setting Entries
|
||||
LanguageSettingsProviderTab_SettingEntriesTooltip=Setting Entries
|
||||
LanguageSettingsProviderTab_ShowEntries=Show Entries
|
||||
|
|
Loading…
Add table
Reference in a new issue