in src/org/jetbrains/tfsIntegration/ui/CheckInPoliciesForm.java [127:309]
public CheckInPoliciesForm(Project project, Map<String, ManageWorkspacesForm.ProjectEntry> projectToDescriptors) {
myProject = project;
myProjectToDescriptors = new HashMap<>(projectToDescriptors.size());
for (Map.Entry<String, ManageWorkspacesForm.ProjectEntry> e : projectToDescriptors.entrySet()) {
myProjectToDescriptors.put(e.getKey(), new ModifyableProjectEntry(new ModifyableProjectEntry(e.getValue())));
}
myProjectCombo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
updateTable();
updateCheckboxes();
}
});
myPoliciesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
updateButtons();
}
});
List<String> projects = new ArrayList<>(myProjectToDescriptors.keySet());
Collections.sort(projects, (s1, s2) -> s1.compareTo(s2));
myProjectCombo.setModel(new DefaultComboBoxModel(ArrayUtilRt.toStringArray(projects)));
myProjectCombo.setRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JLabel component = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
String path = (String)value;
component.setText(VersionControlPath.getTeamProject(path));
return component;
}
});
myPoliciesTable.setModelAndUpdateColumns(new ListTableModel<>(COLUMNS));
myEditButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final StatefulPolicyDescriptor descriptor = getSelectedDescriptor();
editPolicy(descriptor);
}
});
myRemoveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final StatefulPolicyDescriptor descriptor = getSelectedDescriptor();
final String message = MessageFormat.format("Are you sure to remove checkin policy ''{0}''?", descriptor.getType().getName());
if (Messages.showOkCancelDialog(myProject, message, "Remove Checkin Policy", Messages.getQuestionIcon()) == Messages.OK) {
final ModifyableProjectEntry projectEntry = myProjectToDescriptors.get(getSelectedProject());
projectEntry.descriptors.remove(descriptor);
projectEntry.isModified = true;
updateTable();
updateButtons();
}
}
});
myAddButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final ModifyableProjectEntry projectEntry = myProjectToDescriptors.get(getSelectedProject());
List<PolicyBase> policies = new ArrayList<>();
try {
// do not allow to add the same unconfigurable policy several times
main_loop:
for (PolicyBase installed : CheckinPoliciesManager.getInstalledPolicies()) {
if (!installed.canEdit()) {
for (StatefulPolicyDescriptor descriptor : projectEntry.descriptors) {
if (descriptor.getType().equals(installed.getPolicyType())) {
continue main_loop;
}
}
}
policies.add(installed);
}
}
catch (DuplicatePolicyIdException ex) {
final String message = MessageFormat
.format("Several checkin policies with the same id found: ''{0}''.\nPlease review your extensions.", ex.getDuplicateId());
Messages.showErrorDialog(myProject, message, "Add Checkin Policy");
return;
}
ChooseCheckinPolicyDialog d = new ChooseCheckinPolicyDialog(myProject, policies);
if (!d.showAndGet()) {
return;
}
PolicyBase policy = d.getSelectedPolicy();
StatefulPolicyDescriptor newDescriptor =
new StatefulPolicyDescriptor(policy.getPolicyType(), true, StatefulPolicyParser.createEmptyConfiguration(),
Collections.emptyList(), StatefulPolicyDescriptor.DEFAULT_PRIORITY, null);
if (!editPolicy(newDescriptor)) {
return;
}
projectEntry.descriptors.add(newDescriptor);
projectEntry.isModified = true;
updateTable();
int index = projectEntry.descriptors.size() - 1;
myPoliciesTable.getSelectionModel().setSelectionInterval(index, index);
updateButtons();
}
});
new DoubleClickListener() {
@Override
protected boolean onDoubleClick(MouseEvent e) {
final StatefulPolicyDescriptor descriptor = getSelectedDescriptor();
if (descriptor != null) {
editPolicy(descriptor);
}
return true;
}
}.installOn(myPoliciesTable);
myTeampriseCheckBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ModifyableProjectEntry entry = myProjectToDescriptors.get(getSelectedProject());
entry.policiesCompatibilityOverride.teamprise = myTeampriseCheckBox.isSelected();
entry.isModified = true;
}
});
myTeamExplorerCheckBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ModifyableProjectEntry entry = myProjectToDescriptors.get(getSelectedProject());
entry.policiesCompatibilityOverride.teamExplorer = myTeamExplorerCheckBox.isSelected();
entry.isModified = true;
}
});
myNonInstalledPoliciesCheckBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ModifyableProjectEntry entry = myProjectToDescriptors.get(getSelectedProject());
entry.policiesCompatibilityOverride.nonInstalled = myNonInstalledPoliciesCheckBox.isSelected();
entry.isModified = true;
}
});
myOverrideCheckBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ModifyableProjectEntry entry = myProjectToDescriptors.get(getSelectedProject());
if (myOverrideCheckBox.isSelected()) {
entry.policiesCompatibilityOverride = new TfsCheckinPoliciesCompatibility(false, false, false);
}
else {
entry.policiesCompatibilityOverride = null;
}
updateCheckboxes();
entry.isModified = true;
}
});
ActionListener l = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
boolean b = myTeamExplorerCheckBox.isSelected() || myTeampriseCheckBox.isSelected();
myNonInstalledPoliciesCheckBox.setEnabled(b);
if (!b) {
myNonInstalledPoliciesCheckBox.setSelected(false);
myProjectToDescriptors.get(getSelectedProject()).policiesCompatibilityOverride.nonInstalled = false;
}
}
};
myTeamExplorerCheckBox.addActionListener(l);
myTeampriseCheckBox.addActionListener(l);
updateTable();
updateCheckboxes();
updateButtons();
}