mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[git] IJPL-171799 Allow setting upstream when changing remote only
(cherry picked from commit 254d0905374904611564cbb154007885441fb605) IJ-MR-150510 GitOrigin-RevId: a7ba139ac6095ec83bd80fe96e7b89d66a30fe12
This commit is contained in:
committed by
intellij-monorepo-bot
parent
45aeba9f76
commit
ffbe2f59c3
@@ -117,11 +117,11 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
// "Set upstream" checkbox isn't shown if there is no existing tracking branch
|
||||
defaultTarget.getTargetType() == GitPushTargetType.TRACKING_BRANCH && !defaultTarget.isNewBranchCreated()
|
||||
) {
|
||||
myUpstreamCheckbox = new SetUpstreamCheckbox(defaultTarget.getBranch().getNameForRemoteOperations());
|
||||
myUpstreamCheckbox = new SetUpstreamCheckbox(defaultTarget.getBranch());
|
||||
myTargetEditor.addDocumentListener(new DocumentListener() {
|
||||
@Override
|
||||
public void documentChanged(@NotNull DocumentEvent event) {
|
||||
myUpstreamCheckbox.setVisible(myTargetEditor.getText());
|
||||
myUpstreamCheckbox.setVisible(myTargetEditor.getText(), myRemoteRenderer.getText());
|
||||
}
|
||||
});
|
||||
add(myUpstreamCheckbox, BorderLayout.EAST);
|
||||
@@ -172,7 +172,7 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
myRemoteRenderer.updateLinkText(noRemotes ? GitBundle.message("push.dialog.target.panel.define.remote") : initialRemote);
|
||||
|
||||
if (myUpstreamCheckbox != null) {
|
||||
myUpstreamCheckbox.setVisible(initialBranch);
|
||||
myUpstreamCheckbox.setVisible(initialBranch, initialRemote);
|
||||
}
|
||||
|
||||
myTargetEditor.setVisible(!noRemotes);
|
||||
@@ -309,10 +309,11 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
myTargetRenderer.setSelected(isSelected);
|
||||
myTargetRenderer.setTransparent(!isActive);
|
||||
myTargetRenderer.render(renderer);
|
||||
GitRemoteBranch targetBranch = (target != null) ? target.getBranch() : null;
|
||||
boolean newUpstream = myUpstreamCheckbox != null &&
|
||||
target != null &&
|
||||
targetBranch != null &&
|
||||
myUpstreamCheckbox.isSelected() &&
|
||||
!myUpstreamCheckbox.isDefaultUpstream(target.getBranch().getNameForRemoteOperations());
|
||||
!myUpstreamCheckbox.isDefaultUpstream(targetBranch.getNameForRemoteOperations(), targetBranch.getRemote().getName());
|
||||
if (newRemoteBranch || newUpstream) {
|
||||
renderer.setIconOnTheRight(true);
|
||||
}
|
||||
@@ -342,7 +343,7 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
// Checkbox should be explicitly enabled and disabled when toggling editing, as click
|
||||
// to start editing can change checkbox state
|
||||
// See BasicTreeUi#startEditing for details
|
||||
myUpstreamCheckbox.setVisible(myTargetEditor.getText());
|
||||
myUpstreamCheckbox.setVisible(myTargetEditor.getText(), myRemoteRenderer.getText());
|
||||
myUpstreamCheckbox.setEnabled(true);
|
||||
}
|
||||
}
|
||||
@@ -530,24 +531,25 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
}
|
||||
|
||||
private static class SetUpstreamCheckbox extends JBCheckBox {
|
||||
private final String upstreamBranchName;
|
||||
private final GitRemoteBranch defaultTarget;
|
||||
|
||||
SetUpstreamCheckbox(String upstreamBranchName) {
|
||||
SetUpstreamCheckbox(GitRemoteBranch defaultTarget) {
|
||||
super(GitBundle.message("push.dialog.target.panel.upstream.checkbox"), false);
|
||||
|
||||
this.upstreamBranchName = upstreamBranchName;
|
||||
this.defaultTarget = defaultTarget;
|
||||
setBorder(JBUI.Borders.empty(0, 5, 0, 10));
|
||||
setOpaque(false);
|
||||
setFocusable(false);
|
||||
}
|
||||
|
||||
public void setVisible(String targetName) {
|
||||
public void setVisible(String targetName, String remoteName) {
|
||||
boolean valid = GitRefNameValidator.getInstance().checkInput(targetName);
|
||||
setVisible(valid && !isDefaultUpstream(targetName));
|
||||
setVisible(valid && !isDefaultUpstream(targetName, remoteName));
|
||||
}
|
||||
|
||||
public boolean isDefaultUpstream(String targetName) {
|
||||
return upstreamBranchName.equals(targetName);
|
||||
public boolean isDefaultUpstream(String targetName, String remoteName) {
|
||||
return defaultTarget.getNameForRemoteOperations().equals(targetName) &&
|
||||
defaultTarget.getRemote().getName().equals(remoteName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user