in src/org/jetbrains/tfsIntegration/ui/MergeBranchForm.java [87:187]
public MergeBranchForm(final Project project,
final WorkspaceInfo workspace,
String initialSourcePath,
boolean initialSourcePathIsDirectory,
final String dialogTitle) {
myProject = project;
myWorkspace = workspace;
myDialogTitle = dialogTitle;
mySourceBranchLabel.setLabelFor(mySourceField.getChildComponent());
myChangesetsTableModel = new ChangesetsTableModel();
myChangesetsTable = new JBTable(myChangesetsTableModel);
myChangesetsTable.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
for (int i = 0; i < ChangesetsTableModel.Column.values().length; i++) {
myChangesetsTable.getColumnModel().getColumn(i).setPreferredWidth(ChangesetsTableModel.Column.values()[i].getWidth());
}
mySelectRevisionForm = new SelectRevisionForm();
myChangesetsPanel.add(mySelectRevisionForm.getPanel(), ChangesType.ALL.toString());
myChangesetsPanel.add(ScrollPaneFactory.createScrollPane(myChangesetsTable), ChangesType.SELECTED.toString());
mySourceField.setText(initialSourcePath);
mySourceIsDirectory = initialSourcePathIsDirectory;
mySourceField.getButton().addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
ServerBrowserDialog d =
new ServerBrowserDialog(TFSBundle.message("choose.source.item.dialog.title"), project, workspace.getServer(),
mySourceField.getText(), false, false);
if (d.showAndGet()) {
final TfsTreeForm.SelectedItem selectedItem = d.getSelectedItem();
mySourceField.setText(selectedItem != null ? selectedItem.path : null);
mySourceIsDirectory = selectedItem == null || selectedItem.isDirectory;
}
updateOnSourceChange();
}
});
mySourceFieldFocusListener = new FocusAdapter() {
@Override
public void focusLost(final FocusEvent e) {
mySourceIsDirectory = true;
// TODO don't do it on focus out, rather provide a 'Refresh' button
ApplicationManager.getApplication().invokeLater(() -> updateOnSourceChange(), ModalityState.current());
}
};
mySourceField.getTextField().addFocusListener(mySourceFieldFocusListener);
myTargetCombo.setModel(new DefaultComboBoxModel());
myTargetCombo.setRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(final JList list,
final Object value,
final int index,
final boolean isSelected,
final boolean cellHasFocus) {
final Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value != null) {
Item item = (Item)value;
setText(item.getItem());
}
return c;
}
});
myTargetCombo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
if (myChangesTypeCombo.getSelectedItem() == ChangesType.SELECTED) {
updateChangesetsTable();
}
}
});
myChangesTypeCombo.setModel(new DefaultComboBoxModel(ChangesType.values()));
myChangesTypeCombo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
if (myChangesTypeCombo.getSelectedItem() == ChangesType.SELECTED) {
updateChangesetsTable();
}
((CardLayout)myChangesetsPanel.getLayout()).show(myChangesetsPanel, myChangesTypeCombo.getSelectedItem().toString());
fireStateChanged();
}
});
myChangesetsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(final ListSelectionEvent e) {
fireStateChanged();
}
});
myChangesTypeCombo.setSelectedIndex(0);
mySelectRevisionForm.init(project, workspace, initialSourcePath, initialSourcePathIsDirectory);
}