mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-09-07 18:43:32 +02:00
2004-08-19 Alain Magloire
Match the changing API of the Resolver Model. * src/org/eclipse/cdt/internal/ui/preferences/CFileTypesPreferenceBlock.java * src/org/eclipse/cdt/internal/ui/preferences/CFileTypesPreferencePage.java * src/org/eclipse/cdt/internal/ui/preferences/CFileTypesPropertyPage.java
This commit is contained in:
parent
c931ca6163
commit
813491f8c3
4 changed files with 111 additions and 31 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
2004-08-19 Alain Magloire
|
||||||
|
|
||||||
|
Match the changing API of the Resolver Model.
|
||||||
|
|
||||||
|
* src/org/eclipse/cdt/internal/ui/preferences/CFileTypesPreferenceBlock.java
|
||||||
|
* src/org/eclipse/cdt/internal/ui/preferences/CFileTypesPreferencePage.java
|
||||||
|
* src/org/eclipse/cdt/internal/ui/preferences/CFileTypesPropertyPage.java
|
||||||
|
|
||||||
2004-08-19 Alain Magloire
|
2004-08-19 Alain Magloire
|
||||||
|
|
||||||
Show the right icons for non-C-Resources.
|
Show the right icons for non-C-Resources.
|
||||||
|
|
|
@ -55,7 +55,7 @@ public class CFileTypesPreferenceBlock {
|
||||||
private static final int COL_DESCRIPTION = 1;
|
private static final int COL_DESCRIPTION = 1;
|
||||||
private static final int COL_LANGUAGE = 2;
|
private static final int COL_LANGUAGE = 2;
|
||||||
|
|
||||||
private ICFileTypeResolver fResolver;
|
private ICFileTypeResolver fResolverWorkingCopy;
|
||||||
private ArrayList fAddAssoc;
|
private ArrayList fAddAssoc;
|
||||||
private ArrayList fRemoveAssoc;
|
private ArrayList fRemoveAssoc;
|
||||||
private boolean fDirty = false;
|
private boolean fDirty = false;
|
||||||
|
@ -260,7 +260,7 @@ public class CFileTypesPreferenceBlock {
|
||||||
fAssocViewer.setSorter(new AssocSorter());
|
fAssocViewer.setSorter(new AssocSorter());
|
||||||
fAssocViewer.setContentProvider(new AssocContentProvider());
|
fAssocViewer.setContentProvider(new AssocContentProvider());
|
||||||
fAssocViewer.setLabelProvider(new AssocLabelProvider());
|
fAssocViewer.setLabelProvider(new AssocLabelProvider());
|
||||||
fAssocViewer.setInput(getResolver().getFileTypeAssociations());
|
fAssocViewer.setInput(getResolverWorkingCopy().getFileTypeAssociations());
|
||||||
|
|
||||||
fAssocViewer.addSelectionChangedListener(new ISelectionChangedListener() {
|
fAssocViewer.addSelectionChangedListener(new ISelectionChangedListener() {
|
||||||
public void selectionChanged(SelectionChangedEvent event) {
|
public void selectionChanged(SelectionChangedEvent event) {
|
||||||
|
@ -283,15 +283,15 @@ public class CFileTypesPreferenceBlock {
|
||||||
public void setResolver(ICFileTypeResolver resolver) {
|
public void setResolver(ICFileTypeResolver resolver) {
|
||||||
fAddAssoc.clear();
|
fAddAssoc.clear();
|
||||||
fRemoveAssoc.clear();
|
fRemoveAssoc.clear();
|
||||||
fResolver = resolver.createWorkingCopy();
|
fResolverWorkingCopy = resolver.createWorkingCopy();
|
||||||
if (null != fAssocViewer) {
|
if (null != fAssocViewer) {
|
||||||
fAssocViewer.setInput(fResolver.getFileTypeAssociations());
|
fAssocViewer.setInput(fResolverWorkingCopy.getFileTypeAssociations());
|
||||||
}
|
}
|
||||||
setDirty(true);
|
setDirty(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICFileTypeResolver getResolver() {
|
public ICFileTypeResolver getResolverWorkingCopy() {
|
||||||
return fResolver;
|
return fResolverWorkingCopy;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDirty(boolean dirty) {
|
public void setDirty(boolean dirty) {
|
||||||
|
@ -309,7 +309,7 @@ public class CFileTypesPreferenceBlock {
|
||||||
ICFileTypeAssociation[] add = (ICFileTypeAssociation[]) fAddAssoc.toArray(new ICFileTypeAssociation[fAddAssoc.size()]);
|
ICFileTypeAssociation[] add = (ICFileTypeAssociation[]) fAddAssoc.toArray(new ICFileTypeAssociation[fAddAssoc.size()]);
|
||||||
ICFileTypeAssociation[] rem = (ICFileTypeAssociation[]) fRemoveAssoc.toArray(new ICFileTypeAssociation[fRemoveAssoc.size()]);
|
ICFileTypeAssociation[] rem = (ICFileTypeAssociation[]) fRemoveAssoc.toArray(new ICFileTypeAssociation[fRemoveAssoc.size()]);
|
||||||
|
|
||||||
fResolver.adjustAssociations(add, rem);
|
changed = fResolverWorkingCopy.adjustAssociations(add, rem);
|
||||||
|
|
||||||
fAddAssoc.clear();
|
fAddAssoc.clear();
|
||||||
fRemoveAssoc.clear();
|
fRemoveAssoc.clear();
|
||||||
|
|
|
@ -10,11 +10,19 @@
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.preferences;
|
package org.eclipse.cdt.internal.ui.preferences;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
|
import org.eclipse.cdt.core.filetype.ICFileTypeAssociation;
|
||||||
import org.eclipse.cdt.core.filetype.ICFileTypeResolver;
|
import org.eclipse.cdt.core.filetype.ICFileTypeResolver;
|
||||||
import org.eclipse.cdt.core.filetype.IResolverModel;
|
import org.eclipse.cdt.core.filetype.IResolverModel;
|
||||||
|
import org.eclipse.cdt.core.internal.filetype.WorkspaceResolver;
|
||||||
import org.eclipse.cdt.internal.ui.ICHelpContextIds;
|
import org.eclipse.cdt.internal.ui.ICHelpContextIds;
|
||||||
import org.eclipse.cdt.ui.CUIPlugin;
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
|
import org.eclipse.core.runtime.Preferences;
|
||||||
import org.eclipse.jface.preference.PreferencePage;
|
import org.eclipse.jface.preference.PreferencePage;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.layout.GridData;
|
import org.eclipse.swt.layout.GridData;
|
||||||
|
@ -32,6 +40,7 @@ import org.eclipse.ui.help.WorkbenchHelp;
|
||||||
public class CFileTypesPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
|
public class CFileTypesPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
|
||||||
|
|
||||||
private CFileTypesPreferenceBlock fPrefsBlock;
|
private CFileTypesPreferenceBlock fPrefsBlock;
|
||||||
|
private ICFileTypeResolver fResolver;
|
||||||
|
|
||||||
public CFileTypesPreferencePage() {
|
public CFileTypesPreferencePage() {
|
||||||
setDescription(PreferencesMessages.getString("CFileTypesPreferencePage.description")); //$NON-NLS-1$
|
setDescription(PreferencesMessages.getString("CFileTypesPreferencePage.description")); //$NON-NLS-1$
|
||||||
|
@ -46,9 +55,9 @@ public class CFileTypesPreferencePage extends PreferencePage implements IWorkben
|
||||||
|
|
||||||
topPane.setLayout(new GridLayout());
|
topPane.setLayout(new GridLayout());
|
||||||
topPane.setLayoutData(new GridData(GridData.FILL_BOTH));
|
topPane.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||||
|
|
||||||
ICFileTypeResolver resolver = CCorePlugin.getDefault().getFileTypeResolver(null);
|
fResolver = getResolverModel().getResolver();
|
||||||
fPrefsBlock = new CFileTypesPreferenceBlock(resolver);
|
fPrefsBlock = new CFileTypesPreferenceBlock(fResolver);
|
||||||
|
|
||||||
WorkbenchHelp.setHelp( topPane, ICHelpContextIds.FILE_TYPES_PREF_PAGE );
|
WorkbenchHelp.setHelp( topPane, ICHelpContextIds.FILE_TYPES_PREF_PAGE );
|
||||||
return fPrefsBlock.createControl(topPane);
|
return fPrefsBlock.createControl(topPane);
|
||||||
|
@ -64,11 +73,11 @@ public class CFileTypesPreferencePage extends PreferencePage implements IWorkben
|
||||||
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
|
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
|
||||||
*/
|
*/
|
||||||
protected void performDefaults() {
|
protected void performDefaults() {
|
||||||
IResolverModel model = getResolverModel();
|
Preferences prefs = CCorePlugin.getDefault().getPluginPreferences();
|
||||||
|
prefs.setToDefault(WorkspaceResolver.PREFS_ASSOCIATIONS_EXCLUSION);
|
||||||
model.setResolver(null);
|
prefs.setToDefault(WorkspaceResolver.PREFS_ASSOCIATIONS_INCLUSION);
|
||||||
fPrefsBlock.setResolver(model.getResolver());
|
fPrefsBlock.setResolver(getResolverModel().getResolver());
|
||||||
|
|
||||||
super.performDefaults();
|
super.performDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,10 +85,32 @@ public class CFileTypesPreferencePage extends PreferencePage implements IWorkben
|
||||||
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
|
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
|
||||||
*/
|
*/
|
||||||
public boolean performOk() {
|
public boolean performOk() {
|
||||||
IResolverModel model = getResolverModel();
|
|
||||||
|
|
||||||
if (fPrefsBlock.performOk()) {
|
if (fPrefsBlock.performOk()) {
|
||||||
model.setResolver(fPrefsBlock.getResolver());
|
ICFileTypeAssociation[] oldAssocs = fResolver.getFileTypeAssociations();
|
||||||
|
|
||||||
|
ICFileTypeResolver workingCopy = fPrefsBlock.getResolverWorkingCopy();
|
||||||
|
ICFileTypeAssociation[] newAssocs = workingCopy.getFileTypeAssociations();
|
||||||
|
|
||||||
|
// compare
|
||||||
|
List delList = new ArrayList();
|
||||||
|
List addList = new ArrayList();
|
||||||
|
|
||||||
|
for (int i = 0; i < oldAssocs.length; i++) {
|
||||||
|
if (Arrays.binarySearch(newAssocs, oldAssocs[i], ICFileTypeAssociation.Comparator) < 0) {
|
||||||
|
delList.add(oldAssocs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < newAssocs.length; i++) {
|
||||||
|
if (Arrays.binarySearch(oldAssocs, newAssocs[i], ICFileTypeAssociation.Comparator) < 0) {
|
||||||
|
addList.add(newAssocs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ICFileTypeAssociation[] addAssocs = (ICFileTypeAssociation[]) addList.toArray(new ICFileTypeAssociation[addList.size()]);
|
||||||
|
ICFileTypeAssociation[] delAssocs = (ICFileTypeAssociation[]) delList.toArray(new ICFileTypeAssociation[delList.size()]);
|
||||||
|
fResolver.adjustAssociations(addAssocs, delAssocs);
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.performOk();
|
return super.performOk();
|
||||||
|
|
|
@ -10,7 +10,12 @@
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
package org.eclipse.cdt.internal.ui.preferences;
|
package org.eclipse.cdt.internal.ui.preferences;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
|
import org.eclipse.cdt.core.filetype.ICFileTypeAssociation;
|
||||||
import org.eclipse.cdt.core.filetype.ICFileTypeResolver;
|
import org.eclipse.cdt.core.filetype.ICFileTypeResolver;
|
||||||
import org.eclipse.cdt.core.filetype.IResolverModel;
|
import org.eclipse.cdt.core.filetype.IResolverModel;
|
||||||
import org.eclipse.cdt.internal.ui.ICHelpContextIds;
|
import org.eclipse.cdt.internal.ui.ICHelpContextIds;
|
||||||
|
@ -34,7 +39,8 @@ public class CFileTypesPropertyPage extends PropertyPage {
|
||||||
|
|
||||||
private Button fUseWorkspace;
|
private Button fUseWorkspace;
|
||||||
private Button fUseProject;
|
private Button fUseProject;
|
||||||
private CFileTypesPreferenceBlock fPrefsBlock;
|
protected ICFileTypeResolver fResolver;
|
||||||
|
protected CFileTypesPreferenceBlock fPrefsBlock;
|
||||||
|
|
||||||
public CFileTypesPropertyPage(){
|
public CFileTypesPropertyPage(){
|
||||||
super();
|
super();
|
||||||
|
@ -60,6 +66,7 @@ public class CFileTypesPropertyPage extends PropertyPage {
|
||||||
fUseWorkspace.setText(PreferencesMessages.getString("CFileTypesPropertyPage.useWorkspaceSettings")); //$NON-NLS-1$
|
fUseWorkspace.setText(PreferencesMessages.getString("CFileTypesPropertyPage.useWorkspaceSettings")); //$NON-NLS-1$
|
||||||
fUseWorkspace.addListener(SWT.Selection, new Listener() {
|
fUseWorkspace.addListener(SWT.Selection, new Listener() {
|
||||||
public void handleEvent(Event e) {
|
public void handleEvent(Event e) {
|
||||||
|
fPrefsBlock.setResolver(getResolverModel().getResolver());
|
||||||
fPrefsBlock.setEnabled(false);
|
fPrefsBlock.setEnabled(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -68,6 +75,7 @@ public class CFileTypesPropertyPage extends PropertyPage {
|
||||||
fUseProject.setText(PreferencesMessages.getString("CFileTypesPropertyPage.useProjectSettings")); //$NON-NLS-1$
|
fUseProject.setText(PreferencesMessages.getString("CFileTypesPropertyPage.useProjectSettings")); //$NON-NLS-1$
|
||||||
fUseProject.addListener(SWT.Selection, new Listener() {
|
fUseProject.addListener(SWT.Selection, new Listener() {
|
||||||
public void handleEvent(Event e) {
|
public void handleEvent(Event e) {
|
||||||
|
fPrefsBlock.setResolver(fResolver);
|
||||||
fPrefsBlock.setEnabled(true);
|
fPrefsBlock.setEnabled(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -75,23 +83,23 @@ public class CFileTypesPropertyPage extends PropertyPage {
|
||||||
// Resolver block
|
// Resolver block
|
||||||
|
|
||||||
IProject project = getProject();
|
IProject project = getProject();
|
||||||
ICFileTypeResolver resolver = CCorePlugin.getDefault().getFileTypeResolver(project);
|
IResolverModel model = getResolverModel();
|
||||||
IResolverModel model = CCorePlugin.getDefault().getResolverModel();
|
fResolver = model.getResolver(project);
|
||||||
boolean custom = model.getResolver() != model.getResolver(project);
|
boolean custom = model.hasCustomResolver(project);
|
||||||
|
|
||||||
Composite blockPane = new Composite(topPane, SWT.NONE);
|
Composite blockPane = new Composite(topPane, SWT.NONE);
|
||||||
|
|
||||||
blockPane.setLayout(new GridLayout());
|
blockPane.setLayout(new GridLayout());
|
||||||
blockPane.setLayoutData(new GridData(GridData.FILL_BOTH));
|
blockPane.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||||
|
|
||||||
fPrefsBlock = new CFileTypesPreferenceBlock(resolver);
|
fPrefsBlock = new CFileTypesPreferenceBlock(fResolver);
|
||||||
|
|
||||||
fPrefsBlock.createControl(blockPane);
|
fPrefsBlock.createControl(blockPane);
|
||||||
|
|
||||||
fUseWorkspace.setSelection(!custom);
|
fUseWorkspace.setSelection(!custom);
|
||||||
fUseProject.setSelection(custom);
|
fUseProject.setSelection(custom);
|
||||||
fPrefsBlock.setEnabled(custom);
|
fPrefsBlock.setEnabled(custom);
|
||||||
|
|
||||||
WorkbenchHelp.setHelp( topPane, ICHelpContextIds.FILE_TYPES_STD_PAGE );
|
WorkbenchHelp.setHelp( topPane, ICHelpContextIds.FILE_TYPES_STD_PAGE );
|
||||||
return topPane;
|
return topPane;
|
||||||
}
|
}
|
||||||
|
@ -102,6 +110,7 @@ public class CFileTypesPropertyPage extends PropertyPage {
|
||||||
protected void performDefaults() {
|
protected void performDefaults() {
|
||||||
fUseWorkspace.setSelection(true);
|
fUseWorkspace.setSelection(true);
|
||||||
fUseProject.setSelection(false);
|
fUseProject.setSelection(false);
|
||||||
|
fPrefsBlock.setResolver(getResolverModel().getResolver());
|
||||||
fPrefsBlock.setEnabled(false);
|
fPrefsBlock.setEnabled(false);
|
||||||
super.performDefaults();
|
super.performDefaults();
|
||||||
}
|
}
|
||||||
|
@ -110,16 +119,48 @@ public class CFileTypesPropertyPage extends PropertyPage {
|
||||||
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
|
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
|
||||||
*/
|
*/
|
||||||
public boolean performOk() {
|
public boolean performOk() {
|
||||||
IResolverModel model = getResolverModel();
|
|
||||||
|
|
||||||
if (fUseProject.getSelection()) {
|
if (fUseProject.getSelection()) {
|
||||||
if (fPrefsBlock.performOk()) {
|
IProject project = getProject();
|
||||||
model.setResolver(getProject(), fPrefsBlock.getResolver());
|
IResolverModel model = getResolverModel();
|
||||||
|
ICFileTypeResolver workingCopy = fPrefsBlock.getResolverWorkingCopy();
|
||||||
|
if (!model.hasCustomResolver(project)) {
|
||||||
|
model.createCustomResolver(project, workingCopy);
|
||||||
|
} else {
|
||||||
|
if (fPrefsBlock.performOk()) {
|
||||||
|
ICFileTypeAssociation[] oldAssocs = fResolver.getFileTypeAssociations();
|
||||||
|
|
||||||
|
ICFileTypeAssociation[] newAssocs = workingCopy.getFileTypeAssociations();
|
||||||
|
|
||||||
|
// compare
|
||||||
|
List delList = new ArrayList();
|
||||||
|
List addList = new ArrayList();
|
||||||
|
|
||||||
|
for (int i = 0; i < oldAssocs.length; i++) {
|
||||||
|
if (Arrays.binarySearch(newAssocs, oldAssocs[i], ICFileTypeAssociation.Comparator) < 0) {
|
||||||
|
delList.add(oldAssocs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < newAssocs.length; i++) {
|
||||||
|
if (Arrays.binarySearch(oldAssocs, newAssocs[i], ICFileTypeAssociation.Comparator) < 0) {
|
||||||
|
addList.add(newAssocs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ICFileTypeAssociation[] addAssocs = (ICFileTypeAssociation[]) addList.toArray(new ICFileTypeAssociation[addList.size()]);
|
||||||
|
ICFileTypeAssociation[] delAssocs = (ICFileTypeAssociation[]) delList.toArray(new ICFileTypeAssociation[delList.size()]);
|
||||||
|
|
||||||
|
fResolver.adjustAssociations(addAssocs, delAssocs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (fUseWorkspace.getSelection()) {
|
||||||
|
IProject project = getProject();
|
||||||
|
IResolverModel model = getResolverModel();
|
||||||
|
if (model.hasCustomResolver(project)) {
|
||||||
|
model.removeCustomResolver(project);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
model.setResolver(getProject(), null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.performOk();
|
return super.performOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +175,7 @@ public class CFileTypesPropertyPage extends PropertyPage {
|
||||||
return project;
|
return project;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IResolverModel getResolverModel() {
|
protected IResolverModel getResolverModel() {
|
||||||
return CCorePlugin.getDefault().getResolverModel();
|
return CCorePlugin.getDefault().getResolverModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue