1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-19 15:05:36 +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:
Alain Magloire 2004-08-20 20:31:33 +00:00
parent c931ca6163
commit 813491f8c3
4 changed files with 111 additions and 31 deletions

View file

@ -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
Show the right icons for non-C-Resources.

View file

@ -55,7 +55,7 @@ public class CFileTypesPreferenceBlock {
private static final int COL_DESCRIPTION = 1;
private static final int COL_LANGUAGE = 2;
private ICFileTypeResolver fResolver;
private ICFileTypeResolver fResolverWorkingCopy;
private ArrayList fAddAssoc;
private ArrayList fRemoveAssoc;
private boolean fDirty = false;
@ -260,7 +260,7 @@ public class CFileTypesPreferenceBlock {
fAssocViewer.setSorter(new AssocSorter());
fAssocViewer.setContentProvider(new AssocContentProvider());
fAssocViewer.setLabelProvider(new AssocLabelProvider());
fAssocViewer.setInput(getResolver().getFileTypeAssociations());
fAssocViewer.setInput(getResolverWorkingCopy().getFileTypeAssociations());
fAssocViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
@ -283,15 +283,15 @@ public class CFileTypesPreferenceBlock {
public void setResolver(ICFileTypeResolver resolver) {
fAddAssoc.clear();
fRemoveAssoc.clear();
fResolver = resolver.createWorkingCopy();
fResolverWorkingCopy = resolver.createWorkingCopy();
if (null != fAssocViewer) {
fAssocViewer.setInput(fResolver.getFileTypeAssociations());
fAssocViewer.setInput(fResolverWorkingCopy.getFileTypeAssociations());
}
setDirty(true);
}
public ICFileTypeResolver getResolver() {
return fResolver;
public ICFileTypeResolver getResolverWorkingCopy() {
return fResolverWorkingCopy;
}
public void setDirty(boolean dirty) {
@ -309,7 +309,7 @@ public class CFileTypesPreferenceBlock {
ICFileTypeAssociation[] add = (ICFileTypeAssociation[]) fAddAssoc.toArray(new ICFileTypeAssociation[fAddAssoc.size()]);
ICFileTypeAssociation[] rem = (ICFileTypeAssociation[]) fRemoveAssoc.toArray(new ICFileTypeAssociation[fRemoveAssoc.size()]);
fResolver.adjustAssociations(add, rem);
changed = fResolverWorkingCopy.adjustAssociations(add, rem);
fAddAssoc.clear();
fRemoveAssoc.clear();

View file

@ -10,11 +10,19 @@
***********************************************************************/
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.filetype.ICFileTypeAssociation;
import org.eclipse.cdt.core.filetype.ICFileTypeResolver;
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.ui.CUIPlugin;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
@ -32,6 +40,7 @@ import org.eclipse.ui.help.WorkbenchHelp;
public class CFileTypesPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
private CFileTypesPreferenceBlock fPrefsBlock;
private ICFileTypeResolver fResolver;
public CFileTypesPreferencePage() {
setDescription(PreferencesMessages.getString("CFileTypesPreferencePage.description")); //$NON-NLS-1$
@ -46,9 +55,9 @@ public class CFileTypesPreferencePage extends PreferencePage implements IWorkben
topPane.setLayout(new GridLayout());
topPane.setLayoutData(new GridData(GridData.FILL_BOTH));
ICFileTypeResolver resolver = CCorePlugin.getDefault().getFileTypeResolver(null);
fPrefsBlock = new CFileTypesPreferenceBlock(resolver);
fResolver = getResolverModel().getResolver();
fPrefsBlock = new CFileTypesPreferenceBlock(fResolver);
WorkbenchHelp.setHelp( topPane, ICHelpContextIds.FILE_TYPES_PREF_PAGE );
return fPrefsBlock.createControl(topPane);
@ -64,11 +73,11 @@ public class CFileTypesPreferencePage extends PreferencePage implements IWorkben
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
*/
protected void performDefaults() {
IResolverModel model = getResolverModel();
model.setResolver(null);
fPrefsBlock.setResolver(model.getResolver());
Preferences prefs = CCorePlugin.getDefault().getPluginPreferences();
prefs.setToDefault(WorkspaceResolver.PREFS_ASSOCIATIONS_EXCLUSION);
prefs.setToDefault(WorkspaceResolver.PREFS_ASSOCIATIONS_INCLUSION);
fPrefsBlock.setResolver(getResolverModel().getResolver());
super.performDefaults();
}
@ -76,10 +85,32 @@ public class CFileTypesPreferencePage extends PreferencePage implements IWorkben
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
*/
public boolean performOk() {
IResolverModel model = getResolverModel();
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();

View file

@ -10,7 +10,12 @@
***********************************************************************/
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.filetype.ICFileTypeAssociation;
import org.eclipse.cdt.core.filetype.ICFileTypeResolver;
import org.eclipse.cdt.core.filetype.IResolverModel;
import org.eclipse.cdt.internal.ui.ICHelpContextIds;
@ -34,7 +39,8 @@ public class CFileTypesPropertyPage extends PropertyPage {
private Button fUseWorkspace;
private Button fUseProject;
private CFileTypesPreferenceBlock fPrefsBlock;
protected ICFileTypeResolver fResolver;
protected CFileTypesPreferenceBlock fPrefsBlock;
public CFileTypesPropertyPage(){
super();
@ -60,6 +66,7 @@ public class CFileTypesPropertyPage extends PropertyPage {
fUseWorkspace.setText(PreferencesMessages.getString("CFileTypesPropertyPage.useWorkspaceSettings")); //$NON-NLS-1$
fUseWorkspace.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
fPrefsBlock.setResolver(getResolverModel().getResolver());
fPrefsBlock.setEnabled(false);
}
});
@ -68,6 +75,7 @@ public class CFileTypesPropertyPage extends PropertyPage {
fUseProject.setText(PreferencesMessages.getString("CFileTypesPropertyPage.useProjectSettings")); //$NON-NLS-1$
fUseProject.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
fPrefsBlock.setResolver(fResolver);
fPrefsBlock.setEnabled(true);
}
});
@ -75,23 +83,23 @@ public class CFileTypesPropertyPage extends PropertyPage {
// Resolver block
IProject project = getProject();
ICFileTypeResolver resolver = CCorePlugin.getDefault().getFileTypeResolver(project);
IResolverModel model = CCorePlugin.getDefault().getResolverModel();
boolean custom = model.getResolver() != model.getResolver(project);
IResolverModel model = getResolverModel();
fResolver = model.getResolver(project);
boolean custom = model.hasCustomResolver(project);
Composite blockPane = new Composite(topPane, SWT.NONE);
blockPane.setLayout(new GridLayout());
blockPane.setLayoutData(new GridData(GridData.FILL_BOTH));
fPrefsBlock = new CFileTypesPreferenceBlock(resolver);
fPrefsBlock = new CFileTypesPreferenceBlock(fResolver);
fPrefsBlock.createControl(blockPane);
fUseWorkspace.setSelection(!custom);
fUseProject.setSelection(custom);
fPrefsBlock.setEnabled(custom);
WorkbenchHelp.setHelp( topPane, ICHelpContextIds.FILE_TYPES_STD_PAGE );
return topPane;
}
@ -102,6 +110,7 @@ public class CFileTypesPropertyPage extends PropertyPage {
protected void performDefaults() {
fUseWorkspace.setSelection(true);
fUseProject.setSelection(false);
fPrefsBlock.setResolver(getResolverModel().getResolver());
fPrefsBlock.setEnabled(false);
super.performDefaults();
}
@ -110,16 +119,48 @@ public class CFileTypesPropertyPage extends PropertyPage {
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
*/
public boolean performOk() {
IResolverModel model = getResolverModel();
if (fUseProject.getSelection()) {
if (fPrefsBlock.performOk()) {
model.setResolver(getProject(), fPrefsBlock.getResolver());
IProject project = getProject();
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();
}
@ -134,7 +175,7 @@ public class CFileTypesPropertyPage extends PropertyPage {
return project;
}
private IResolverModel getResolverModel() {
protected IResolverModel getResolverModel() {
return CCorePlugin.getDefault().getResolverModel();
}