blob: 0b7ce95ba266190270bb5ecfa6c53ad972d1b123 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2005 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.team.internal.ccvs.ui.wizards;
import java.util.*;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.team.core.Team;
import org.eclipse.team.internal.ccvs.core.CVSException;
import org.eclipse.team.internal.ccvs.core.ICVSFile;
import org.eclipse.team.internal.ccvs.core.client.Command;
import org.eclipse.team.internal.ccvs.core.client.Command.KSubstOption;
import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
import org.eclipse.team.internal.ccvs.ui.CVSUIMessages;
import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
import org.eclipse.team.internal.ui.SWTUtils;
import org.eclipse.team.internal.ui.preferences.FileTypeTable;
import org.eclipse.team.internal.ui.preferences.FileTypeTable.Item;
import org.eclipse.ui.PlatformUI;
/**
*
*/
public class CommitWizardFileTypePage extends WizardPage {
private final Collection fExtensions;
private final Collection<Item> fNames;
public CommitWizardFileTypePage(Collection unknownExtensions, Collection unknownNames) {
super(CVSUIMessages.CommitWizardFileTypePage_0);
setTitle(CVSUIMessages.CommitWizardFileTypePage_0);
setDescription(CVSUIMessages.CommitWizardFileTypePage_2);
fNames = new ArrayList<>();
for (final Iterator iter = unknownNames.iterator(); iter.hasNext();) {
final String name = (String) iter.next();
fNames.add(new FileTypeTable.Name(name, false));
}
fExtensions= new ArrayList();
for (final Iterator iter = unknownExtensions.iterator(); iter.hasNext();) {
final String extension= (String)iter.next();
fExtensions.add(new FileTypeTable.Extension(extension, false));
}
}
@Override
public void createControl(Composite parent) {
initializeDialogUnits(parent);
final Composite composite= new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
// set F1 help
PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IHelpContextIds.COMMIT_FILE_TYPES_PAGE);
final Label label= new Label(composite, SWT.WRAP);
label.setText(CVSUIMessages.CommitWizardFileTypePage_3);
label.setLayoutData(SWTUtils.createHFillGridData());
Dialog.applyDialogFont(composite);
final List items= new ArrayList();
items.addAll(fNames);
items.addAll(fExtensions);
new FileTypeTable(composite, items, true);
setControl(composite);
}
public void getModesForExtensions(Map toSave, Map notToSave) {
getModes(fExtensions, toSave, notToSave);
}
public void getModesForNames(Map toSave, Map notToSave) {
getModes(fNames, toSave, notToSave);
}
private static void getModes(Collection items, Map toSave, Map notToSave) {
for (final Iterator iter = items.iterator(); iter.hasNext();) {
final FileTypeTable.Item item= (FileTypeTable.Item)iter.next();
final Map destination= item.save ? toSave : notToSave;
destination.put(item.name, Integer.valueOf(item.mode));
}
}
public KSubstOption getOption(IFile file) throws CVSException {
final String extension= file.getFileExtension();
if (extension != null) {
for (Iterator iter = fExtensions.iterator(); iter.hasNext();) {
final FileTypeTable.Item element = (FileTypeTable.Item) iter.next();
if (element.name.equals(extension)) {
return element.mode == Team.TEXT ? KSubstOption.getDefaultTextMode() : Command.KSUBST_BINARY;
}
}
} else {
final String name= file.getName();
for (Iterator iter = fNames.iterator(); iter.hasNext();) {
FileTypeTable.Item item = (FileTypeTable.Item) iter.next();
if (item.name.equals(name)) {
return item.mode == Team.TEXT ? KSubstOption.getDefaultTextMode() : Command.KSUBST_BINARY;
}
}
}
final ICVSFile cvsFile = CVSWorkspaceRoot.getCVSFileFor(file);
ResourceSyncInfo fileInfo = cvsFile.getSyncInfo();
return fileInfo != null ? fileInfo.getKeywordMode() : KSubstOption.fromFile(file);
}
public static void saveExtensionMappings(Map modesToPersist) {
final String [] extensions= new String [modesToPersist.size()];
final int [] modes= new int[modesToPersist.size()];
int index= 0;
for (Iterator iter= modesToPersist.keySet().iterator(); iter.hasNext();) {
extensions[index]= (String) iter.next();
modes[index]= ((Integer)modesToPersist.get(extensions[index])).intValue();
++index;
}
Team.getFileContentManager().addExtensionMappings(extensions, modes);
}
public static void saveNameMappings(Map modesToPersist) {
final String [] names= new String [modesToPersist.size()];
final int [] modes= new int[modesToPersist.size()];
int index= 0;
for (Iterator iter= modesToPersist.keySet().iterator(); iter.hasNext();) {
names[index]= (String) iter.next();
modes[index]= ((Integer)modesToPersist.get(names[index])).intValue();
++index;
}
Team.getFileContentManager().addNameMappings(names, modes);
}
}