mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
svn: i18n - annotate, branches
GitOrigin-RevId: c5d802921551116c14824b6560ec551948ba64c6
This commit is contained in:
committed by
intellij-monorepo-bot
parent
71b12899d6
commit
c9d8376f7c
@@ -97,6 +97,21 @@ radio.copy.to.branch.or.tag=Branch or Tag
|
||||
radio.copy.to.any.location=Any Location
|
||||
label.copy.comment=&Comment
|
||||
label.copy.select.location.dialog.copy.as=Copy &as:
|
||||
notification.content.branches.load.error=Branches load error: {0}
|
||||
progress.title.checking.target.folder=Checking target folder
|
||||
dialog.message.repository.path.does.not.exist=The repository path ''{0}'' does not exist. Would you like to create it?
|
||||
dialog.title.select.working.copy.location=Select Working Copy Location
|
||||
label.select.location.to.copy.from=Select location to copy from:
|
||||
dialog.message.branch.name.is.empty=Branch name is empty
|
||||
dialog.message.invalid.branch.name=Invalid branch name
|
||||
dialog.message.invalid.branch.url=Invalid branch url
|
||||
dialog.message.no.branch.base.location.selected=No branch base location selected
|
||||
dialog.message.invalid.revision=Invalid revision
|
||||
dialog.message.invalid.repository.location=Invalid repository location
|
||||
checkbox.switch.to.newly.created.branch.or.tag=Switch {0} to the newly created branch or tag
|
||||
error.can.not.find.url.for.file=Can not find url for file: {0}
|
||||
error.can.not.find.working.copy.for.file=Can not find working copy for file: {0}
|
||||
progress.title.svn.branches.preloader=Subversion branches preloader
|
||||
|
||||
#Relocate dialog
|
||||
dialog.title.relocate.working.copy=Relocate Working Copy
|
||||
@@ -402,7 +417,7 @@ progress.text2.deleting=Deleting ''{0}''
|
||||
progress.text2.sending=Sending ''{0}''
|
||||
progress.text2.replacing=Replacing ''{0}''
|
||||
progress.text2.transmitting.delta=Transmitting delta for ''{0}''
|
||||
progress.title.copy=Subversion Copy
|
||||
progress.title.copy=Subversion copy
|
||||
status.text.comitted.revision=Committed revision {0}.
|
||||
progress.text.copy.to=Copy to ''{0}''
|
||||
message.text.no.conflicts.found=No conflicts found
|
||||
@@ -429,6 +444,13 @@ message.title.error.fetching.affected.paths=Error Fetching Affected Paths
|
||||
exception.text.cannot.annotate.directory=Annotation operation only makes sence for files
|
||||
progress.text.computing.annotation=Computing annotation for ''{0}''
|
||||
action.text.annotate=Annotate
|
||||
label.revision=Revision
|
||||
label.merge.source.revision=Merge source revision
|
||||
tooltip.revision.number.message=Revision {0}: {1}
|
||||
error.can.not.find.relative.path.for.path.at.revision=Can not find relative path for {0}@{1}
|
||||
error.can.not.get.current.revision.for.path=Can not get current revision for file {0}
|
||||
error.can.not.get.last.changed.revision.for.path.please.file.an.issue=Can not get last changed revision for file: {0}\n\
|
||||
Please run svn info for this file and file an issue.
|
||||
checkbox.checkin.keep.files.locked=&Keep files locked
|
||||
checkbox.checkin.auto.update.after.commit=Auto-update after commit
|
||||
progress.title.commit=Commit
|
||||
@@ -571,7 +593,7 @@ configure.branches.item=Configure Branches...
|
||||
refresh.branches.item=Refresh Branches...
|
||||
copy.column.title=Copy
|
||||
copy.column.tooltip=Copied from {0}
|
||||
compare.with.branch.progress.loading.branches=Loading Branches
|
||||
progress.title.loading.branches=Loading branches
|
||||
compare.with.branch.progress.loading.content=Loading Content
|
||||
compare.with.branch.diff.title=Compare with Branch
|
||||
compare.with.branch.error.title=Compare with Branch
|
||||
@@ -579,8 +601,6 @@ compare.with.branch.popup.title=Compare with Branch
|
||||
getting.branch.configuration.error=Error retrieving branch configuration: {0}
|
||||
compare.with.branch.location.error=Couldn''t find repository location for file ''{0}'' under branch ''{1}''\nPlease check your branch configuration.
|
||||
compare.with.branch.list.error=Error Loading Branches
|
||||
create.branch.invalid.revision.error=Invalid revision
|
||||
create.branch.no.base.location.error=No branch base location selected
|
||||
action.name.switch=Switch
|
||||
import.dialog.title=Import into Subversion
|
||||
import.dialog.button=Import
|
||||
@@ -655,7 +675,7 @@ action.Subversion.integrate.changes.messages.title=Integrate To branch
|
||||
dialog.message.integrate.changes.error.no.available.files=No files available for integration
|
||||
action.Subversion.integrate.changes.warning.failed.list.text=Changelist {0} ({1}) integration faced problems
|
||||
action.Subversion.integrate.changes.warning.skipped.lists.text=Skipped changelists: {0}
|
||||
action.Subversion.integrate.changes.select.branch.text=Select branch to integrate to...
|
||||
popup.title.select.branch.to.integrate.to=Select Branch to Integrate to...
|
||||
dialog.message.integrate.changes.error.same.source.and.target=Can not start integration: Target and source branches are the same.
|
||||
dialog.message.integrate.changes.error.target.not.dir=Can not start integration: target directory does not exist or is not a directory.
|
||||
dialog.message.integrate.changes.error.not.versioned=Can not start integration: target directory is not under Subversion control or does not belong to the selected branch.
|
||||
@@ -670,7 +690,7 @@ action.Subversion.integrate.changes.message.canceled.text=Integration was cancel
|
||||
action.Subversion.integrate.changes.progress.integrating.text=Merging changes
|
||||
action.Subversion.integrate.changes.progress.integrating.details.text=Merging changelist {0}
|
||||
update.switch.to.branch.text=Use branch:
|
||||
select.branch.popup.general.title=Select branch
|
||||
popup.title.select.branch=Select Branch
|
||||
progress.live.provider.loading.revisions.text=Loading revisions from server
|
||||
progress.live.provider.loading.revisions.details.text=Loading revisions from server...
|
||||
dialog.show.svn.map.title=Subversion Working Copies Information
|
||||
|
||||
+1
-1
@@ -91,7 +91,7 @@ public abstract class AbstractIntegrateChangesAction<T extends SelectedCommitted
|
||||
Url selectedBranchUrl = getSelectedBranchUrl(checker);
|
||||
if (selectedBranchUrl == null) {
|
||||
SelectBranchPopup.showForBranchRoot(project, checker.getRoot(), changesActionPerformer,
|
||||
message("action.Subversion.integrate.changes.select.branch.text"));
|
||||
message("popup.title.select.branch.to.integrate.to"));
|
||||
} else {
|
||||
changesActionPerformer.onBranchSelected(selectedBranchUrl, getSelectedBranchLocalPath(checker), getDialogTitle());
|
||||
}
|
||||
|
||||
@@ -7,8 +7,6 @@ import com.intellij.openapi.vcs.VcsKey;
|
||||
import com.intellij.openapi.vcs.annotate.*;
|
||||
import com.intellij.openapi.vcs.history.VcsFileRevision;
|
||||
import com.intellij.openapi.vcs.history.VcsRevisionNumber;
|
||||
import com.intellij.xml.util.XmlStringUtil;
|
||||
import git4idea.annotate.AnnotationTooltipBuilder;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
|
||||
@@ -28,6 +26,9 @@ import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static com.intellij.xml.util.XmlStringUtil.escapeString;
|
||||
import static git4idea.annotate.AnnotationTooltipBuilder.buildSimpleTooltip;
|
||||
|
||||
public abstract class BaseSvnFileAnnotation extends FileAnnotation {
|
||||
private final String myContents;
|
||||
protected final VcsRevisionNumber myBaseRevision;
|
||||
@@ -74,9 +75,9 @@ public abstract class BaseSvnFileAnnotation extends FileAnnotation {
|
||||
if (info == null) return null;
|
||||
|
||||
SvnFileRevision revision = myRevisionMap.get(info.getRevisionNumber());
|
||||
return revision != null
|
||||
? XmlStringUtil.escapeString("Revision " + info.getRevisionNumber() + ": " + revision.getCommitMessage())
|
||||
: "";
|
||||
if (revision == null) return "";
|
||||
|
||||
return escapeString(SvnBundle.message("tooltip.revision.number.message", info.getRevisionNumber(), revision.getCommitMessage()));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -137,18 +138,17 @@ public abstract class BaseSvnFileAnnotation extends FileAnnotation {
|
||||
return getToolTip(lineNumber, true);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private String getToolTip(int lineNumber, boolean asHtml) {
|
||||
private @NlsContexts.Tooltip @Nullable String getToolTip(int lineNumber, boolean asHtml) {
|
||||
final CommitInfo info = myInfos.getOrNull(lineNumber);
|
||||
if (info == null) return null;
|
||||
|
||||
SvnFileRevision revision = myRevisionMap.get(info.getRevisionNumber());
|
||||
if (revision == null) return null;
|
||||
|
||||
String prefix = myInfos.getAnnotationSource(lineNumber).showMerged() ? "Merge source revision" : "Revision";
|
||||
return AnnotationTooltipBuilder.buildSimpleTooltip(getProject(), asHtml, prefix,
|
||||
String.valueOf(info.getRevisionNumber()),
|
||||
revision.getCommitMessage());
|
||||
String prefix = myInfos.getAnnotationSource(lineNumber).showMerged()
|
||||
? SvnBundle.message("label.merge.source.revision")
|
||||
: SvnBundle.message("label.revision");
|
||||
return buildSimpleTooltip(getProject(), asHtml, prefix, String.valueOf(info.getRevisionNumber()), revision.getCommitMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.vcsUtil.VcsUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.svn.SvnBundle;
|
||||
import org.jetbrains.idea.svn.SvnDiffProvider;
|
||||
import org.jetbrains.idea.svn.SvnRevisionNumber;
|
||||
import org.jetbrains.idea.svn.SvnVcs;
|
||||
@@ -44,6 +43,7 @@ import java.util.Map;
|
||||
|
||||
import static com.intellij.openapi.fileEditor.impl.LoadTextUtil.getTextByBinaryPresentation;
|
||||
import static com.intellij.openapi.vfs.VfsUtilCore.virtualToIoFile;
|
||||
import static org.jetbrains.idea.svn.SvnBundle.message;
|
||||
import static org.jetbrains.idea.svn.SvnUtil.*;
|
||||
|
||||
public class SvnAnnotationProvider implements AnnotationProvider, VcsCacheableAnnotationProvider {
|
||||
@@ -61,16 +61,14 @@ public class SvnAnnotationProvider implements AnnotationProvider, VcsCacheableAn
|
||||
SvnRevisionNumber currentRevision = ((SvnRevisionNumber)provider.getCurrentRevision(file));
|
||||
VcsRevisionDescription lastChangedRevision = provider.getCurrentRevisionDescription(file);
|
||||
if (lastChangedRevision == null) {
|
||||
throw new VcsException("Can not get current revision for file " + file.getPath());
|
||||
throw new VcsException(message("error.can.not.get.current.revision.for.path", file.getPath()));
|
||||
}
|
||||
final Revision revision = ((SvnRevisionNumber)lastChangedRevision.getRevisionNumber()).getRevision();
|
||||
if (!revision.isValid()) {
|
||||
throw new VcsException(
|
||||
"Can not get last changed revision for file: " + file.getPath() + "\nPlease run svn info for this file and file an issue.");
|
||||
throw new VcsException(message("error.can.not.get.last.changed.revision.for.path.please.file.an.issue", file.getPath()));
|
||||
}
|
||||
return annotate(file, currentRevision, lastChangedRevision.getRevisionNumber(), () -> {
|
||||
byte[] data =
|
||||
getFileContents(myVcs, Target.on(virtualToIoFile(file).getAbsoluteFile()), Revision.BASE, Revision.UNDEFINED);
|
||||
byte[] data = getFileContents(myVcs, Target.on(virtualToIoFile(file).getAbsoluteFile()), Revision.BASE, Revision.UNDEFINED);
|
||||
return getTextByBinaryPresentation(data, file, false, false).toString();
|
||||
});
|
||||
}
|
||||
@@ -90,7 +88,7 @@ public class SvnAnnotationProvider implements AnnotationProvider, VcsCacheableAn
|
||||
@NotNull VcsRevisionNumber lastChangedRevision,
|
||||
@NotNull Throwable2Computable<String, VcsException, IOException> contentLoader) throws VcsException {
|
||||
if (file.isDirectory()) {
|
||||
throw new VcsException(SvnBundle.message("exception.text.cannot.annotate.directory"));
|
||||
throw new VcsException(message("exception.text.cannot.annotate.directory"));
|
||||
}
|
||||
final FileAnnotation[] annotation = new FileAnnotation[1];
|
||||
final VcsException[] exception = new VcsException[1];
|
||||
@@ -115,7 +113,7 @@ public class SvnAnnotationProvider implements AnnotationProvider, VcsCacheableAn
|
||||
endRevision = info.getRevision();
|
||||
}
|
||||
if (progress != null) {
|
||||
progress.setText(SvnBundle.message("progress.text.computing.annotation", file.getName()));
|
||||
progress.setText(message("progress.text.computing.annotation", file.getName()));
|
||||
}
|
||||
|
||||
// ignore mime type=true : IDEA-19562
|
||||
@@ -154,7 +152,7 @@ public class SvnAnnotationProvider implements AnnotationProvider, VcsCacheableAn
|
||||
};
|
||||
if (ApplicationManager.getApplication().isDispatchThread()) {
|
||||
ProgressManager.getInstance()
|
||||
.runProcessWithProgressSynchronously(command, SvnBundle.message("action.text.annotate"), false, myVcs.getProject());
|
||||
.runProcessWithProgressSynchronously(command, message("action.text.annotate"), false, myVcs.getProject());
|
||||
}
|
||||
else {
|
||||
command.run();
|
||||
@@ -230,17 +228,20 @@ public class SvnAnnotationProvider implements AnnotationProvider, VcsCacheableAn
|
||||
final File root = getCommonAncestor(wasFile, info.getFile());
|
||||
|
||||
if (root == null) {
|
||||
throw new VcsException("Can not find relative path for " + wasFile.getPath() + "@" + revisionNumber.asString());
|
||||
throw new VcsException(
|
||||
message("error.can.not.find.relative.path.for.path.at.revision", wasFile.getPath(), revisionNumber.asString()));
|
||||
}
|
||||
|
||||
final String relativePath = FileUtil.getRelativePath(root.getPath(), wasFile.getPath(), File.separatorChar);
|
||||
if (relativePath == null) {
|
||||
throw new VcsException("Can not find relative path for " + wasFile.getPath() + "@" + revisionNumber.asString());
|
||||
throw new VcsException(
|
||||
message("error.can.not.find.relative.path.for.path.at.revision", wasFile.getPath(), revisionNumber.asString()));
|
||||
}
|
||||
|
||||
Info wcRootInfo = myVcs.getInfo(root);
|
||||
if (wcRootInfo == null || wcRootInfo.getUrl() == null) {
|
||||
throw new VcsException("Can not find relative path for " + wasFile.getPath() + "@" + revisionNumber.asString());
|
||||
throw new VcsException(
|
||||
message("error.can.not.find.relative.path.for.path.at.revision", wasFile.getPath(), revisionNumber.asString()));
|
||||
}
|
||||
Url wasUrl = wcRootInfo.getUrl();
|
||||
final String[] strings = relativePath.replace('\\', '/').split("/");
|
||||
@@ -437,7 +438,7 @@ public class SvnAnnotationProvider implements AnnotationProvider, VcsCacheableAn
|
||||
|
||||
if (myProgress != null) {
|
||||
myProgress.checkCanceled();
|
||||
myProgress.setText2(SvnBundle.message("progress.text2.revision.processed", logEntry.getRevision()));
|
||||
myProgress.setText2(message("progress.text2.revision.processed", logEntry.getRevision()));
|
||||
}
|
||||
myResult.setRevision(logEntry.getRevision(), new SvnFileRevision(myVcs, Revision.UNDEFINED, logEntry, myUrl, ""));
|
||||
});
|
||||
|
||||
@@ -20,6 +20,7 @@ class Url private constructor(innerUri: URI) {
|
||||
val userInfo: String? = uri.userInfo
|
||||
val path: String = uri.path.orEmpty().removeSuffix("/")
|
||||
|
||||
@get:NlsSafe
|
||||
val tail: String get() = path.substringAfterLast('/')
|
||||
|
||||
fun commonAncestorWith(url: Url): Url? {
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package org.jetbrains.idea.svn.branchConfig;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.MessageType;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vcs.ui.VcsBalloonProblemNotifier;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.svn.SvnVcs;
|
||||
@@ -19,6 +18,9 @@ import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.intellij.openapi.vcs.ui.VcsBalloonProblemNotifier.showOverChangesView;
|
||||
import static org.jetbrains.idea.svn.SvnBundle.message;
|
||||
|
||||
public class BranchesLoader implements Runnable {
|
||||
@NotNull private final Project myProject;
|
||||
@NotNull private final NewRootBunch myBunch;
|
||||
@@ -68,7 +70,7 @@ public class BranchesLoader implements Runnable {
|
||||
private void showError(Exception e) {
|
||||
// already logged inside
|
||||
if (InfoReliability.setByUser.equals(myInfoReliability)) {
|
||||
VcsBalloonProblemNotifier.showOverChangesView(myProject, "Branches load error: " + e.getMessage(), MessageType.ERROR);
|
||||
showOverChangesView(myProject, message("notification.content.branches.load.error", e.getMessage()), MessageType.ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+20
-10
@@ -15,7 +15,6 @@ import com.intellij.openapi.wm.StatusBar;
|
||||
import com.intellij.openapi.wm.WindowManager;
|
||||
import com.intellij.vcsUtil.VcsUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.svn.SvnBundle;
|
||||
import org.jetbrains.idea.svn.SvnStatusUtil;
|
||||
import org.jetbrains.idea.svn.SvnVcs;
|
||||
import org.jetbrains.idea.svn.actions.BasicAction;
|
||||
@@ -33,14 +32,17 @@ import java.io.File;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.intellij.openapi.application.ApplicationManager.getApplication;
|
||||
import static com.intellij.openapi.ui.Messages.getQuestionIcon;
|
||||
import static com.intellij.openapi.ui.Messages.showYesNoDialog;
|
||||
import static com.intellij.openapi.vfs.VfsUtilCore.virtualToIoFile;
|
||||
import static org.jetbrains.idea.svn.SvnBundle.message;
|
||||
import static org.jetbrains.idea.svn.SvnUtil.removePathTail;
|
||||
|
||||
public class CreateBranchOrTagAction extends BasicAction {
|
||||
@NotNull
|
||||
@Override
|
||||
protected String getActionName() {
|
||||
return SvnBundle.message("action.Subversion.Copy.text");
|
||||
return message("action.Subversion.Copy.text");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -60,9 +62,12 @@ public class CreateBranchOrTagAction extends BasicAction {
|
||||
Url parentUrl = removePathTail(destination);
|
||||
|
||||
if (!dirExists(vcs, parentUrl)) {
|
||||
int rc =
|
||||
Messages.showYesNoDialog(vcs.getProject(), "The repository path '" + parentUrl + "' does not exist. Would you like to create it?",
|
||||
"Branch or Tag", Messages.getQuestionIcon());
|
||||
int rc = showYesNoDialog(
|
||||
vcs.getProject(),
|
||||
message("dialog.message.repository.path.does.not.exist", parentUrl),
|
||||
message("copy.dialog.title"),
|
||||
getQuestionIcon()
|
||||
);
|
||||
if (rc == Messages.NO) {
|
||||
return;
|
||||
}
|
||||
@@ -74,7 +79,7 @@ public class CreateBranchOrTagAction extends BasicAction {
|
||||
ProgressIndicator progress = ProgressManager.getInstance().getProgressIndicator();
|
||||
CommitEventHandler handler = null;
|
||||
if (progress != null) {
|
||||
progress.setText(SvnBundle.message("progress.text.copy.to", destination.toDecodedString()));
|
||||
progress.setText(message("progress.text.copy.to", destination.toDecodedString()));
|
||||
handler = new IdeaCommitHandler(progress);
|
||||
}
|
||||
|
||||
@@ -88,7 +93,7 @@ public class CreateBranchOrTagAction extends BasicAction {
|
||||
}
|
||||
};
|
||||
ProgressManager.getInstance()
|
||||
.runProcessWithProgressSynchronously(copyCommand, SvnBundle.message("progress.title.copy"), false, vcs.getProject());
|
||||
.runProcessWithProgressSynchronously(copyCommand, message("progress.title.copy"), false, vcs.getProject());
|
||||
if (!exception.isNull()) {
|
||||
throw new VcsException(exception.get());
|
||||
}
|
||||
@@ -96,7 +101,7 @@ public class CreateBranchOrTagAction extends BasicAction {
|
||||
if (dialog.isSwitchOnCreate()) {
|
||||
SingleRootSwitcher switcher =
|
||||
new SingleRootSwitcher(vcs.getProject(), VcsUtil.getFilePath(sourceFile, sourceFile.isDirectory()), destination);
|
||||
AutoSvnUpdater.run(switcher, SvnBundle.message("action.name.switch"));
|
||||
AutoSvnUpdater.run(switcher, message("action.name.switch"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -106,7 +111,7 @@ public class CreateBranchOrTagAction extends BasicAction {
|
||||
StatusBar statusBar = WindowManager.getInstance().getStatusBar(project);
|
||||
|
||||
if (statusBar != null) {
|
||||
statusBar.setInfo(SvnBundle.message("status.text.comitted.revision", revision));
|
||||
statusBar.setInfo(message("status.text.comitted.revision", revision));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -129,7 +134,12 @@ public class CreateBranchOrTagAction extends BasicAction {
|
||||
};
|
||||
|
||||
if (getApplication().isDispatchThread()) {
|
||||
ProgressManager.getInstance().runProcessWithProgressSynchronously(taskImpl, "Checking target folder", true, vcs.getProject());
|
||||
ProgressManager.getInstance().runProcessWithProgressSynchronously(
|
||||
taskImpl,
|
||||
message("progress.title.checking.target.folder"),
|
||||
true,
|
||||
vcs.getProject()
|
||||
);
|
||||
}
|
||||
else {
|
||||
taskImpl.run();
|
||||
|
||||
+15
-11
@@ -91,12 +91,16 @@ public class CreateBranchOrTagDialog extends DialogWrapper {
|
||||
|
||||
Info info = myVcs.getInfo(file);
|
||||
if (info == null || info.getUrl() == null) {
|
||||
throw new VcsException("Can not find url for file: " + file.getPath());
|
||||
throw new VcsException(message("error.can.not.find.url.for.file", file.getPath()));
|
||||
}
|
||||
mySrcURL = info.getUrl();
|
||||
|
||||
myWorkingCopyField.addBrowseFolderListener("Select Working Copy Location", "Select Location to Copy From:",
|
||||
myProject, FileChooserDescriptorFactory.createSingleFolderDescriptor());
|
||||
myWorkingCopyField.addBrowseFolderListener(
|
||||
message("dialog.title.select.working.copy.location"),
|
||||
message("label.select.location.to.copy.from"),
|
||||
myProject,
|
||||
FileChooserDescriptorFactory.createSingleFolderDescriptor()
|
||||
);
|
||||
myWorkingCopyField.getTextField().getDocument().addDocumentListener(new DocumentAdapter() {
|
||||
@Override
|
||||
protected void textChanged(@NotNull final DocumentEvent e) {
|
||||
@@ -133,7 +137,7 @@ public class CreateBranchOrTagDialog extends DialogWrapper {
|
||||
|
||||
RootUrlInfo root = myVcs.getSvnFileUrlMapping().getWcRootForFilePath(getFilePath(file));
|
||||
if (root == null) {
|
||||
throw new VcsException("Can not find working copy for file: " + file.getPath());
|
||||
throw new VcsException(message("error.can.not.find.working.copy.for.file", file.getPath()));
|
||||
}
|
||||
mySrcVirtualFile = root.getVirtualFile();
|
||||
myWcRootUrl = root.getUrl();
|
||||
@@ -203,7 +207,7 @@ public class CreateBranchOrTagDialog extends DialogWrapper {
|
||||
}
|
||||
|
||||
private void updateSwitchOnCreate() {
|
||||
mySwitchOnCreate.setText("Switch " + getSourceFile() + " to the newly created branch or tag");
|
||||
mySwitchOnCreate.setText(message("checkbox.switch.to.newly.created.branch.or.tag", getSourceFile()));
|
||||
}
|
||||
|
||||
private void updateControls() {
|
||||
@@ -296,12 +300,12 @@ public class CreateBranchOrTagDialog extends DialogWrapper {
|
||||
if (myRepositoryRadioButton.isSelected()) {
|
||||
Url url = getRepositoryFieldUrl();
|
||||
if (url == null) {
|
||||
return new ValidationInfo("Invalid repository location", myRepositoryField.getTextField());
|
||||
return new ValidationInfo(message("dialog.message.invalid.repository.location"), myRepositoryField.getTextField());
|
||||
}
|
||||
|
||||
Revision revision = getRevision();
|
||||
if (!revision.isValid() || revision.isLocal()) {
|
||||
return new ValidationInfo(message("create.branch.invalid.revision.error"), myRevisionPanel.getRevisionTextField());
|
||||
return new ValidationInfo(message("dialog.message.invalid.revision"), myRevisionPanel.getRevisionTextField());
|
||||
}
|
||||
|
||||
mySource = Target.on(url, revision);
|
||||
@@ -318,18 +322,18 @@ public class CreateBranchOrTagDialog extends DialogWrapper {
|
||||
if (myBranchOrTagRadioButton.isSelected()) {
|
||||
Url branchLocation = myBranchTagBaseModel.getSelected();
|
||||
if (branchLocation == null) {
|
||||
return new ValidationInfo(message("create.branch.no.base.location.error"), myBranchTagBaseComboBox.getComboBox());
|
||||
return new ValidationInfo(message("dialog.message.no.branch.base.location.selected"), myBranchTagBaseComboBox.getComboBox());
|
||||
}
|
||||
|
||||
if (isEmptyOrSpaces(myBranchTextField.getText())) {
|
||||
return new ValidationInfo("Branch name is empty", myBranchTextField);
|
||||
return new ValidationInfo(message("dialog.message.branch.name.is.empty"), myBranchTextField);
|
||||
}
|
||||
|
||||
try {
|
||||
myDestination = branchLocation.appendPath(myBranchTextField.getText(), false);
|
||||
}
|
||||
catch (SvnBindException e) {
|
||||
return new ValidationInfo("Invalid branch name", myBranchTextField);
|
||||
return new ValidationInfo(message("dialog.message.invalid.branch.name"), myBranchTextField);
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -337,7 +341,7 @@ public class CreateBranchOrTagDialog extends DialogWrapper {
|
||||
myDestination = createUrl(myToURLText.getText(), false);
|
||||
}
|
||||
catch (SvnBindException e) {
|
||||
return new ValidationInfo("Invalid branch url", myToURLText.getTextField());
|
||||
return new ValidationInfo(message("dialog.message.invalid.branch.url"), myToURLText.getTextField());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.openapi.ui.popup.ListSeparator;
|
||||
import com.intellij.openapi.ui.popup.PopupStep;
|
||||
import com.intellij.openapi.ui.popup.util.BaseListPopupStep;
|
||||
import com.intellij.openapi.util.NlsContexts.PopupTitle;
|
||||
import com.intellij.openapi.util.NlsSafe;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.text.DateFormatUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
@@ -30,6 +32,8 @@ import static com.intellij.openapi.vfs.VfsUtilCore.virtualToIoFile;
|
||||
import static com.intellij.util.containers.ContainerUtil.addIfNotNull;
|
||||
|
||||
public final class SelectBranchPopup {
|
||||
private static final @NlsSafe @NotNull String TRUNK_NAME = "trunk";
|
||||
|
||||
private SelectBranchPopup() {
|
||||
}
|
||||
|
||||
@@ -40,14 +44,14 @@ public final class SelectBranchPopup {
|
||||
public static void show(@NotNull Project project,
|
||||
@NotNull VirtualFile file,
|
||||
@NotNull BranchSelectedCallback callback,
|
||||
@Nullable String title) {
|
||||
@PopupTitle @Nullable String title) {
|
||||
show(project, file, callback, title, null);
|
||||
}
|
||||
|
||||
public static void show(@NotNull Project project,
|
||||
@NotNull VirtualFile file,
|
||||
@NotNull BranchSelectedCallback callback,
|
||||
@Nullable String title,
|
||||
@PopupTitle @Nullable String title,
|
||||
@Nullable Component component) {
|
||||
SvnFileUrlMapping urlMapping = SvnVcs.getInstance(project).getSvnFileUrlMapping();
|
||||
Url svnurl = urlMapping.getUrlForFile(virtualToIoFile(file));
|
||||
@@ -65,14 +69,14 @@ public final class SelectBranchPopup {
|
||||
public static void showForBranchRoot(@NotNull Project project,
|
||||
@NotNull VirtualFile vcsRoot,
|
||||
@NotNull BranchSelectedCallback callback,
|
||||
@Nullable String title) {
|
||||
@PopupTitle @Nullable String title) {
|
||||
showForBranchRoot(project, vcsRoot, callback, title, null);
|
||||
}
|
||||
|
||||
public static void showForBranchRoot(@NotNull Project project,
|
||||
@NotNull VirtualFile vcsRoot,
|
||||
@NotNull BranchSelectedCallback callback,
|
||||
@Nullable String title,
|
||||
@PopupTitle @Nullable String title,
|
||||
@Nullable Component component) {
|
||||
SvnBranchConfigurationNew configuration = SvnBranchConfigurationManager.getInstance(project).get(vcsRoot);
|
||||
List<Object> items = new ArrayList<>();
|
||||
@@ -85,8 +89,7 @@ public final class SelectBranchPopup {
|
||||
step.showPopupAt(JBPopupFactory.getInstance().createListPopup(step));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static String getBranchName(@NotNull SvnBranchItem branch) {
|
||||
private static @NlsSafe @NotNull String getBranchName(@NotNull SvnBranchItem branch) {
|
||||
return branch.getUrl().getTail();
|
||||
}
|
||||
|
||||
@@ -98,12 +101,12 @@ public final class SelectBranchPopup {
|
||||
@Nullable private final Component myComponent;
|
||||
|
||||
BranchBasesPopupStep(@NotNull Project project,
|
||||
@NotNull VirtualFile vcsRoot,
|
||||
@NotNull SvnBranchConfigurationNew configuration,
|
||||
@NotNull BranchSelectedCallback callback,
|
||||
@NotNull List<Object> items,
|
||||
@Nullable String title,
|
||||
@Nullable Component component) {
|
||||
@NotNull VirtualFile vcsRoot,
|
||||
@NotNull SvnBranchConfigurationNew configuration,
|
||||
@NotNull BranchSelectedCallback callback,
|
||||
@NotNull List<Object> items,
|
||||
@PopupTitle @Nullable String title,
|
||||
@Nullable Component component) {
|
||||
myProject = project;
|
||||
myVcsRoot = vcsRoot;
|
||||
myConfiguration = configuration;
|
||||
@@ -122,7 +125,7 @@ public final class SelectBranchPopup {
|
||||
public String getTextFor(@NotNull Object value) {
|
||||
if (value instanceof Url) {
|
||||
Url url = (Url)value;
|
||||
String suffix = url.equals(myConfiguration.getTrunk()) ? " (trunk)" : "...";
|
||||
String suffix = url.equals(myConfiguration.getTrunk()) ? " (" + TRUNK_NAME + ")" : "...";
|
||||
|
||||
return url.getTail() + suffix;
|
||||
}
|
||||
@@ -145,7 +148,7 @@ public final class SelectBranchPopup {
|
||||
}
|
||||
|
||||
private void loadBranches(@NotNull Url branchLocation, @NotNull Runnable runnable) {
|
||||
new Task.Backgroundable(myProject, SvnBundle.message("compare.with.branch.progress.loading.branches"), true) {
|
||||
new Task.Backgroundable(myProject, SvnBundle.message("progress.title.loading.branches"), true) {
|
||||
@Override
|
||||
public void onFinished() {
|
||||
runnable.run();
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@ import com.intellij.openapi.vfs.LocalFileSystem
|
||||
import com.intellij.openapi.vfs.VfsUtilCore.virtualToIoFile
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.vcs.ProgressManagerQueue
|
||||
import org.jetbrains.idea.svn.SvnBundle.message
|
||||
import org.jetbrains.idea.svn.SvnUtil.createUrl
|
||||
import org.jetbrains.idea.svn.SvnVcs
|
||||
import org.jetbrains.idea.svn.api.Url
|
||||
@@ -26,7 +27,7 @@ private val LOG = logger<SvnBranchConfigurationManager>()
|
||||
|
||||
@State(name = "SvnBranchConfigurationManager")
|
||||
internal class SvnBranchConfigurationManager(private val project: Project) : PersistentStateComponent<SvnBranchConfigurationManager.ConfigurationBean> {
|
||||
private val branchesLoader = ProgressManagerQueue(project, "Subversion Branches Preloader")
|
||||
private val branchesLoader = ProgressManagerQueue(project, message("progress.title.svn.branches.preloader"))
|
||||
val svnBranchConfigManager: NewRootBunch = NewRootBunch(project, branchesLoader)
|
||||
private var isInitialized = false
|
||||
|
||||
|
||||
+1
-1
@@ -87,7 +87,7 @@ public class SvnMergeInfoRootPanelManual {
|
||||
refreshSelectedBranch(new WCInfoWithBranches.Branch(url));
|
||||
calculateBranchPathByBranch(mySelectedBranch.getUrl(), null);
|
||||
myListener.run();
|
||||
}, message("select.branch.popup.general.title"));
|
||||
}, message("popup.title.select.branch"));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ public class SvnUpdateRootOptionsPanel implements SvnPanel{
|
||||
}
|
||||
myBranchField.setText(url.getTail());
|
||||
}
|
||||
}, message("select.branch.popup.general.title"), myPanel);
|
||||
}, message("popup.title.select.branch"), myPanel);
|
||||
}
|
||||
|
||||
private void chooseUrl() {
|
||||
|
||||
Reference in New Issue
Block a user