/src/org/bitbucket/connectors/jetbrains/ui/BitbucketCloneProjectDialog.java

https://bitbucket.org/atlassian/jetbrains-bitbucket-connector/ · Java · 107 lines · 90 code · 17 blank · 0 comment · 13 complexity · c56b3a0b49cadc6785933f65cd07c96f MD5 · raw file

  1. package org.bitbucket.connectors.jetbrains.ui;
  2. import com.intellij.openapi.project.Project;
  3. import com.intellij.openapi.util.text.StringUtil;
  4. import com.intellij.openapi.vfs.LocalFileSystem;
  5. import com.intellij.openapi.vfs.VirtualFile;
  6. import org.bitbucket.connectors.jetbrains.BitbucketUtil;
  7. import org.bitbucket.connectors.jetbrains.RepositoryInfo;
  8. import javax.swing.*;
  9. import java.util.List;
  10. public class BitbucketCloneProjectDialog extends BitbucketDialog {
  11. private BitbucketCloneProjectPanel myPanel;
  12. public BitbucketCloneProjectDialog(final Project project, final List<RepositoryInfo> repos) {
  13. super(project);
  14. myPanel = new BitbucketCloneProjectPanel(this);
  15. setTitle(BitbucketBundle.message("select-clone-repository"));
  16. setOKButtonText(BitbucketBundle.message("clone"));
  17. myPanel.setAvailableRepos(repos);
  18. init();
  19. setOKActionEnabled(false);
  20. }
  21. @Override
  22. protected JComponent createCenterPanel() {
  23. return myPanel.getPanel();
  24. }
  25. @Override
  26. protected String getHelpId() {
  27. return BitbucketUtil.BITBUCKET;
  28. }
  29. @Override
  30. public JComponent getPreferredFocusedComponent() {
  31. return myPanel.getPreferrableFocusComponent();
  32. }
  33. public void updateOkButton() {
  34. if (isRepositoryUrl()) {
  35. if (StringUtil.isEmpty(getRepositoryUrl())) {
  36. setErrorText(BitbucketBundle.message("no-repository-url"));
  37. setOKActionEnabled(false);
  38. return;
  39. }
  40. } else {
  41. if (getSelectedRepository() == null) {
  42. setErrorText(BitbucketBundle.message("no-repository-selected"));
  43. setOKActionEnabled(false);
  44. return;
  45. }
  46. }
  47. String path = getSelectedPath();
  48. if (path == null) {
  49. setErrorText(BitbucketBundle.message("select-clone-folder"));
  50. setOKActionEnabled(false);
  51. return;
  52. }
  53. VirtualFile file = LocalFileSystem.getInstance().findFileByPath(path);
  54. if (file == null || !file.exists() || !file.isDirectory()) {
  55. setErrorText(BitbucketBundle.message("no-selected-folder"));
  56. setOKActionEnabled(false);
  57. return;
  58. }
  59. String projectName = getProjectName();
  60. if (file.findChild(projectName) != null) {
  61. setErrorText(BitbucketBundle.message("folder-exists", projectName));
  62. setOKActionEnabled(false);
  63. return;
  64. }
  65. setErrorText(null);
  66. setOKActionEnabled(true);
  67. }
  68. public String getProjectName() {
  69. return myPanel.getProjectName();
  70. }
  71. public RepositoryInfo getSelectedRepository() {
  72. return myPanel.getSelectedRepository();
  73. }
  74. public boolean isRepositoryUrl() {
  75. return myPanel.isRepositoryUrl();
  76. }
  77. public String getRepositoryUrl() {
  78. return myPanel.getRepositoryUrl();
  79. }
  80. @Override
  81. public boolean isUseSsh() {
  82. return BitbucketUtil.isSshUrl(myPanel.getRepositoryUrl());
  83. }
  84. public String getSelectedPath() {
  85. return myPanel.getSelectedPath();
  86. }
  87. public void setSelectedPath(final String path) {
  88. myPanel.setSelectedPath(path);
  89. }
  90. }