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:
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
|
||||
|
||||
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_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();
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue