1 11 12 package org.eclipse.team.internal.ccvs.ui.wizards; 13 14 import java.util.ArrayList ; 15 import java.util.Collection ; 16 import java.util.Iterator ; 17 import java.util.List ; 18 import java.util.Map ; 19 20 import org.eclipse.core.resources.IFile; 21 import org.eclipse.jface.dialogs.Dialog; 22 import org.eclipse.jface.wizard.WizardPage; 23 import org.eclipse.swt.SWT; 24 import org.eclipse.swt.layout.GridLayout; 25 import org.eclipse.swt.widgets.Composite; 26 import org.eclipse.swt.widgets.Label; 27 import org.eclipse.team.core.Team; 28 import org.eclipse.team.internal.ccvs.core.CVSException; 29 import org.eclipse.team.internal.ccvs.core.ICVSFile; 30 import org.eclipse.team.internal.ccvs.core.client.Command; 31 import org.eclipse.team.internal.ccvs.core.client.Command.KSubstOption; 32 import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; 33 import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; 34 import org.eclipse.team.internal.ccvs.ui.*; 35 import org.eclipse.team.internal.ui.SWTUtils; 36 import org.eclipse.team.internal.ui.preferences.FileTypeTable; 37 import org.eclipse.ui.PlatformUI; 38 39 42 public class CommitWizardFileTypePage extends WizardPage { 43 44 private final Collection fExtensions; 45 private final Collection fNames; 46 47 public CommitWizardFileTypePage(Collection unknownExtensions, Collection unknownNames) { 48 super(CVSUIMessages.CommitWizardFileTypePage_0); 49 setTitle(CVSUIMessages.CommitWizardFileTypePage_0); 50 setDescription(CVSUIMessages.CommitWizardFileTypePage_2); 51 52 fNames= new ArrayList (); 53 for (final Iterator iter = unknownNames.iterator(); iter.hasNext();) { 54 final String name = (String ) iter.next(); 55 fNames.add(new FileTypeTable.Name(name, false)); 56 } 57 58 fExtensions= new ArrayList (); 59 for (final Iterator iter = unknownExtensions.iterator(); iter.hasNext();) { 60 final String extension= (String )iter.next(); 61 fExtensions.add(new FileTypeTable.Extension(extension, false)); 62 } 63 } 64 65 public void createControl(Composite parent) { 66 67 initializeDialogUnits(parent); 68 69 final Composite composite= new Composite(parent, SWT.NONE); 70 composite.setLayout(new GridLayout(1, false)); 71 PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IHelpContextIds.COMMIT_FILE_TYPES_PAGE); 73 74 final Label label= new Label(composite, SWT.WRAP); 75 label.setText(CVSUIMessages.CommitWizardFileTypePage_3); 76 label.setLayoutData(SWTUtils.createHFillGridData()); 77 Dialog.applyDialogFont(composite); 78 79 final List items= new ArrayList (); 80 items.addAll(fNames); 81 items.addAll(fExtensions); 82 83 new FileTypeTable(composite, items, true); 84 85 setControl(composite); 86 87 } 88 89 public void getModesForExtensions(Map toSave, Map notToSave) { 90 getModes(fExtensions, toSave, notToSave); 91 } 92 93 public void getModesForNames(Map toSave, Map notToSave) { 94 getModes(fNames, toSave, notToSave); 95 } 96 97 private static void getModes(Collection items, Map toSave, Map notToSave) { 98 for (final Iterator iter = items.iterator(); iter.hasNext();) { 99 final FileTypeTable.Item item= (FileTypeTable.Item)iter.next(); 100 final Map destination= item.save ? toSave : notToSave; 101 destination.put(item.name, new Integer (item.mode)); 102 } 103 } 104 105 public KSubstOption getOption(IFile file) throws CVSException { 106 final String extension= file.getFileExtension(); 107 if (extension != null) { 108 for (Iterator iter = fExtensions.iterator(); iter.hasNext();) { 109 final FileTypeTable.Item element = (FileTypeTable.Item) iter.next(); 110 if (element.name.equals(extension)) { 111 return element.mode == Team.TEXT ? KSubstOption.getDefaultTextMode() : Command.KSUBST_BINARY; 112 } 113 } 114 } else { 115 final String name= file.getName(); 116 for (Iterator iter = fNames.iterator(); iter.hasNext();) { 117 FileTypeTable.Item item = (FileTypeTable.Item) iter.next(); 118 if (item.name.equals(name)) { 119 return item.mode == Team.TEXT ? KSubstOption.getDefaultTextMode() : Command.KSUBST_BINARY; 120 } 121 } 122 } 123 final ICVSFile cvsFile = CVSWorkspaceRoot.getCVSFileFor(file); 124 ResourceSyncInfo fileInfo = cvsFile.getSyncInfo(); 125 return fileInfo != null ? fileInfo.getKeywordMode() : KSubstOption.fromFile(file); 126 } 127 128 public static void saveExtensionMappings(Map modesToPersist) { 129 130 final String [] extensions= new String [modesToPersist.size()]; 131 final int [] modes= new int[modesToPersist.size()]; 132 133 int index= 0; 134 for (Iterator iter= modesToPersist.keySet().iterator(); iter.hasNext();) { 135 extensions[index]= (String ) iter.next(); 136 modes[index]= ((Integer )modesToPersist.get(extensions[index])).intValue(); 137 ++index; 138 } 139 Team.getFileContentManager().addExtensionMappings(extensions, modes); 140 } 141 142 public static void saveNameMappings(Map modesToPersist) { 143 144 final String [] names= new String [modesToPersist.size()]; 145 final int [] modes= new int[modesToPersist.size()]; 146 147 int index= 0; 148 for (Iterator iter= modesToPersist.keySet().iterator(); iter.hasNext();) { 149 names[index]= (String ) iter.next(); 150 modes[index]= ((Integer )modesToPersist.get(names[index])).intValue(); 151 ++index; 152 } 153 Team.getFileContentManager().addNameMappings(names, modes); 154 } 155 } 156 | Popular Tags |