KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > team > internal > ccvs > ui > wizards > CommitWizardFileTypePage


1 /*******************************************************************************
2  * Copyright (c) 2000, 2005 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11
12 package org.eclipse.team.internal.ccvs.ui.wizards;
13
14 import java.util.ArrayList JavaDoc;
15 import java.util.Collection JavaDoc;
16 import java.util.Iterator JavaDoc;
17 import java.util.List JavaDoc;
18 import java.util.Map JavaDoc;
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 /**
40  *
41  */

42 public class CommitWizardFileTypePage extends WizardPage {
43
44     private final Collection JavaDoc fExtensions;
45     private final Collection JavaDoc fNames;
46     
47     public CommitWizardFileTypePage(Collection JavaDoc unknownExtensions, Collection JavaDoc unknownNames) {
48         super(CVSUIMessages.CommitWizardFileTypePage_0);
49         setTitle(CVSUIMessages.CommitWizardFileTypePage_0);
50         setDescription(CVSUIMessages.CommitWizardFileTypePage_2);
51         
52         fNames= new ArrayList JavaDoc();
53         for (final Iterator JavaDoc iter = unknownNames.iterator(); iter.hasNext();) {
54             final String JavaDoc name = (String JavaDoc) iter.next();
55             fNames.add(new FileTypeTable.Name(name, false));
56         }
57         
58         fExtensions= new ArrayList JavaDoc();
59         for (final Iterator JavaDoc iter = unknownExtensions.iterator(); iter.hasNext();) {
60             final String JavaDoc extension= (String JavaDoc)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         // set F1 help
72
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 JavaDoc items= new ArrayList JavaDoc();
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 JavaDoc toSave, Map JavaDoc notToSave) {
90         getModes(fExtensions, toSave, notToSave);
91     }
92
93     public void getModesForNames(Map JavaDoc toSave, Map JavaDoc notToSave) {
94         getModes(fNames, toSave, notToSave);
95     }
96
97     private static void getModes(Collection JavaDoc items, Map JavaDoc toSave, Map JavaDoc notToSave) {
98         for (final Iterator JavaDoc iter = items.iterator(); iter.hasNext();) {
99             final FileTypeTable.Item item= (FileTypeTable.Item)iter.next();
100             final Map JavaDoc destination= item.save ? toSave : notToSave;
101             destination.put(item.name, new Integer JavaDoc(item.mode));
102         }
103     }
104
105     public KSubstOption getOption(IFile file) throws CVSException {
106         final String JavaDoc extension= file.getFileExtension();
107         if (extension != null) {
108             for (Iterator JavaDoc 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 JavaDoc name= file.getName();
116             for (Iterator JavaDoc 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 JavaDoc modesToPersist) {
129         
130         final String JavaDoc [] extensions= new String JavaDoc [modesToPersist.size()];
131         final int [] modes= new int[modesToPersist.size()];
132         
133         int index= 0;
134         for (Iterator JavaDoc iter= modesToPersist.keySet().iterator(); iter.hasNext();) {
135             extensions[index]= (String JavaDoc) iter.next();
136             modes[index]= ((Integer JavaDoc)modesToPersist.get(extensions[index])).intValue();
137             ++index;
138         }
139         Team.getFileContentManager().addExtensionMappings(extensions, modes);
140     }
141     
142     public static void saveNameMappings(Map JavaDoc modesToPersist) {
143         
144         final String JavaDoc [] names= new String JavaDoc [modesToPersist.size()];
145         final int [] modes= new int[modesToPersist.size()];
146         
147         int index= 0;
148         for (Iterator JavaDoc iter= modesToPersist.keySet().iterator(); iter.hasNext();) {
149             names[index]= (String JavaDoc) iter.next();
150             modes[index]= ((Integer JavaDoc)modesToPersist.get(names[index])).intValue();
151             ++index;
152         }
153         Team.getFileContentManager().addNameMappings(names, modes);
154     }
155 }
156
Popular Tags