package gitj.ui.dialogs;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import git.Commit;
import git.ResetMode;
import gitj.Main;
import gitj.utils.DialogUtils;
@SuppressWarnings("serial")
public class DialogReset extends JDialog {
private Commit commit;
private JComboBox<String> comboBox;
private JLabel lblCommit;
private JLabel lblBranch;
public DialogReset(Commit c) {
this.commit = c;
setTitle("Reset to Commit");
setModal(true);
setResizable(false);
setAlwaysOnTop(true);
setBounds(0, 0, 450, 200);
JButton btnCancel = new JButton("Cancel");
btnCancel.setBounds(369, 133, 65, 23);
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
close();
}
});
JButton btnOk = new JButton("OK");
btnOk.setBounds(316, 133, 47, 23);
btnOk.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
reset();
}
});
JLabel lblMode = new JLabel("Mode");
lblMode.setBounds(48, 65, 26, 14);
JLabel lblResetBranch = new JLabel("Reset branch");
lblResetBranch.setBounds(10, 30, 64, 14);
DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>();
for (ResetMode mode : ResetMode.values()) {
model.addElement(mode.getTextual() + " - " + mode.getDescription());
}
comboBox = new JComboBox<String>();
comboBox.setBounds(84, 62, 350, 20);
comboBox.setModel(model);
lblBranch = new JLabel("Branch");
lblBranch.setBounds(84, 30, 33, 14);
JLabel lblToCommit = new JLabel("To commit");
lblToCommit.setBounds(26, 100, 48, 14);
lblCommit = new JLabel(c.getHash() + " - " + c.getComment());
lblCommit.setBounds(84, 100, 120, 14);
getContentPane().setLayout(null);
getContentPane().add(btnOk);
getContentPane().add(btnCancel);
getContentPane().add(lblMode);
getContentPane().add(lblResetBranch);
getContentPane().add(lblToCommit);
getContentPane().add(lblCommit);
getContentPane().add(lblBranch);
getContentPane().add(comboBox);
setLocationRelativeTo(null);
}
public void close() {
setVisible(false);
dispose();
}
public void reset() {
setAlwaysOnTop(false);
ResetMode mode = null;
String selected = comboBox.getSelectedItem().toString().split(" - ")[0];
for (ResetMode m : ResetMode.values()) {
if (selected.equals(m.getTextual())) {
mode = m;
break;
}
}
if (DialogUtils.confirm("Are you sure that you want to reset current branch to commit " + commit.getHash(), "Reset to Commit")) {
try {
commit.reset(mode);
close();
} catch (Exception e) {
e.printStackTrace();
Main.displayError(e);
}
}
setAlwaysOnTop(true);
}
}