public MergeBranchForm()

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);
  }