diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/ui/actions/PackageFileAction.java b/java/compiler/impl/src/com/intellij/packaging/impl/ui/actions/PackageFileAction.java index 186485a8bcaf..982186344763 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/ui/actions/PackageFileAction.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/ui/actions/PackageFileAction.java @@ -21,16 +21,20 @@ import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.util.Clock; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.WindowManager; import com.intellij.packaging.artifacts.Artifact; import com.intellij.packaging.impl.artifacts.ArtifactBySourceFileFinder; +import com.intellij.util.text.DateFormatUtil; import org.jetbrains.annotations.NotNull; import java.io.IOException; -import java.text.DateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; public class PackageFileAction extends AnAction { public PackageFileAction() { @@ -117,7 +121,7 @@ public class PackageFileAction extends AnAction { if (fileNames.length() != 0) fileNames.append(", "); fileNames.append("'").append(file.getName()).append("'"); } - String time = DateFormat.getTimeInstance().format(new Date()); + String time = DateFormatUtil.formatDateTime(Clock.getTime()); final String statusText = CompilerBundle.message("status.text.file.has.been.packaged", files.size(), fileNames, time); WindowManager.getInstance().getStatusBar(project).setInfo(statusText); } diff --git a/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationInspection.java b/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationInspection.java index 484b28270428..8e1def41b083 100644 --- a/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationInspection.java @@ -62,6 +62,7 @@ import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashMap; import com.intellij.util.text.CharArrayUtil; +import com.intellij.util.text.DateFormatUtil; import org.jdom.Element; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -73,7 +74,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; -import java.text.SimpleDateFormat; import java.util.*; import java.util.List; @@ -686,8 +686,7 @@ public class UnusedDeclarationInspection extends FilteringInspectionTool { Document doc = PsiDocumentManager.getInstance(psiElement.getProject()).getDocument(psiFile); if (doc != null) { TextRange textRange = psiElement.getTextRange(); - SimpleDateFormat format = new SimpleDateFormat(); - String date = format.format(new Date()); + String date = DateFormatUtil.formatDateTime(new Date()); int startOffset = textRange.getStartOffset(); CharSequence chars = doc.getCharsSequence(); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/macro/CurrentDateMacro.java b/platform/lang-impl/src/com/intellij/codeInsight/template/macro/CurrentDateMacro.java index ac6efe91c89e..6a3bee3d197d 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/macro/CurrentDateMacro.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/macro/CurrentDateMacro.java @@ -16,8 +16,8 @@ package com.intellij.codeInsight.template.macro; -import java.text.DateFormat; -import java.util.Date; +import com.intellij.openapi.util.Clock; +import com.intellij.util.text.DateFormatUtil; /** * @author yole @@ -28,6 +28,6 @@ public class CurrentDateMacro extends SimpleMacro { } protected String evaluate() { - return DateFormat.getDateInstance().format(new Date()); + return DateFormatUtil.formatDate(Clock.getTime()); } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/macro/CurrentTimeMacro.java b/platform/lang-impl/src/com/intellij/codeInsight/template/macro/CurrentTimeMacro.java index 644ef42bc22b..8d9501f13adf 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/macro/CurrentTimeMacro.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/macro/CurrentTimeMacro.java @@ -16,8 +16,8 @@ package com.intellij.codeInsight.template.macro; -import java.text.DateFormat; -import java.util.Date; +import com.intellij.openapi.util.Clock; +import com.intellij.util.text.DateFormatUtil; /** * @author yole @@ -28,6 +28,6 @@ public class CurrentTimeMacro extends SimpleMacro { } protected String evaluate() { - return DateFormat.getTimeInstance(DateFormat.SHORT).format(new Date()); + return DateFormatUtil.formatTime(Clock.getTime()); } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java index a3ff15a6dee0..8c9023feff59 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java @@ -42,6 +42,7 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.Function; import com.intellij.util.SystemProperties; import com.intellij.util.messages.MessageBus; +import com.intellij.util.text.DateFormatUtil; import gnu.trove.THashSet; import org.jdom.Element; import org.jetbrains.annotations.NonNls; @@ -50,7 +51,6 @@ import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; import java.net.URL; -import java.text.DateFormat; import java.text.MessageFormat; import java.util.*; @@ -230,10 +230,9 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Expo public Properties getDefaultProperties() { @NonNls Properties props = new Properties(); - Date date = new Date(); - props.setProperty("DATE", DateFormat.getDateInstance().format(date)); - props.setProperty("TIME", DateFormat.getTimeInstance().format(date)); Calendar calendar = Calendar.getInstance(); + props.setProperty("DATE", DateFormatUtil.formatDate(calendar.getTime())); + props.setProperty("TIME", DateFormatUtil.formatTime(calendar.getTime())); props.setProperty("YEAR", Integer.toString(calendar.get(Calendar.YEAR))); props.setProperty("MONTH", getCalendarValue(calendar, Calendar.MONTH)); props.setProperty("DAY", getCalendarValue(calendar, Calendar.DAY_OF_MONTH)); diff --git a/platform/lvcs-impl/src/com/intellij/history/integration/revertion/Reverter.java b/platform/lvcs-impl/src/com/intellij/history/integration/revertion/Reverter.java index d9cb77ff2cae..74fb7a4f43d5 100644 --- a/platform/lvcs-impl/src/com/intellij/history/integration/revertion/Reverter.java +++ b/platform/lvcs-impl/src/com/intellij/history/integration/revertion/Reverter.java @@ -97,7 +97,7 @@ public abstract class Reverter { public String getCommandName() { Revision to = getTargetRevision(); String name = to.getChangeSetName(); - String date = DateFormatUtil.formatExactDateTime(to.getTimestamp()); + String date = DateFormatUtil.formatDateTime(to.getTimestamp()); if (name != null) { return LocalHistoryBundle.message("system.label.revert.to.change.date", name, date); } diff --git a/platform/lvcs-impl/src/com/intellij/history/integration/ui/models/FileDifferenceModel.java b/platform/lvcs-impl/src/com/intellij/history/integration/ui/models/FileDifferenceModel.java index da9c39e37d69..9b8404b42e2a 100644 --- a/platform/lvcs-impl/src/com/intellij/history/integration/ui/models/FileDifferenceModel.java +++ b/platform/lvcs-impl/src/com/intellij/history/integration/ui/models/FileDifferenceModel.java @@ -58,7 +58,7 @@ public abstract class FileDifferenceModel { } private String formatTitle(Entry e, boolean isAvailable) { - String result = DateFormatUtil.formatDateTime(e.getTimestamp()) + " - " + e.getName(); + String result = DateFormatUtil.formatPrettyDateTime(e.getTimestamp()) + " - " + e.getName(); if (!isAvailable) { result += " - " + LocalHistoryBundle.message("content.not.available"); } diff --git a/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/RecentChangesPopup.java b/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/RecentChangesPopup.java index 80f4e0378eb0..9aa8b3ec22c4 100644 --- a/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/RecentChangesPopup.java +++ b/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/RecentChangesPopup.java @@ -107,7 +107,7 @@ public class RecentChangesPopup { public Component getListCellRendererComponent(JList l, Object val, int i, boolean isSelected, boolean cellHasFocus) { RecentChange c = (RecentChange)val; myActionLabel.setText(c.getChangeName()); - myDateLabel.setText(DateFormatUtil.formatDateTime(c.getTimestamp())); + myDateLabel.setText(DateFormatUtil.formatPrettyDateTime(c.getTimestamp())); updateColors(isSelected); return myPanel; diff --git a/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/RevisionsList.java b/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/RevisionsList.java index 7d6c766f3d6b..8ae98b060a32 100644 --- a/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/RevisionsList.java +++ b/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/RevisionsList.java @@ -304,7 +304,7 @@ public class RevisionsList { myBorder.set(row == table.getModel().getRowCount() - 1); - myDateLabel.setText(ensureString(DateFormatUtil.formatDateTime(r.revision.getTimestamp()))); + myDateLabel.setText(ensureString(DateFormatUtil.formatPrettyDateTime(r.revision.getTimestamp()))); myFilesCountLabel.setText(ensureString(labelsAndColor.filesCount)); myTitleLabel.setFont(myTitleLabel.getFont().deriveFont(labelsAndColor.isNamed ? Font.BOLD : Font.PLAIN)); diff --git a/platform/lvcs-impl/testSrc/com/intellij/history/integration/revertion/SelectionReverterTest.java b/platform/lvcs-impl/testSrc/com/intellij/history/integration/revertion/SelectionReverterTest.java index c01d371ed0c7..3ed82848a13b 100644 --- a/platform/lvcs-impl/testSrc/com/intellij/history/integration/revertion/SelectionReverterTest.java +++ b/platform/lvcs-impl/testSrc/com/intellij/history/integration/revertion/SelectionReverterTest.java @@ -78,7 +78,7 @@ public class SelectionReverterTest extends IntegrationTestCase { List rr = getRevisionsFor(f); assertEquals(5, rr.size()); - assertEquals("Reverted to " + DateFormatUtil.formatExactDateTime(time), rr.get(1).getChangeSetName()); + assertEquals("Reverted to " + DateFormatUtil.formatDateTime(time), rr.get(1).getChangeSetName()); } public void testAskingForReadOnlyStatusClearingOnlyForTheSpecifiedFile() throws Exception { diff --git a/platform/lvcs-impl/testSrc/com/intellij/history/integration/ui/FileHistoryDialogTest.java b/platform/lvcs-impl/testSrc/com/intellij/history/integration/ui/FileHistoryDialogTest.java index 3572f1686923..c97e20417655 100644 --- a/platform/lvcs-impl/testSrc/com/intellij/history/integration/ui/FileHistoryDialogTest.java +++ b/platform/lvcs-impl/testSrc/com/intellij/history/integration/ui/FileHistoryDialogTest.java @@ -54,9 +54,9 @@ public class FileHistoryDialogTest extends LocalHistoryUITestCase { FileHistoryDialogModel m = createFileModelAndSelectRevisions(f, 0, 2); assertEquals(FileUtil.toSystemDependentName(f.getPath()), m.getDifferenceModel().getTitle()); - assertEquals(DateFormatUtil.formatDateTime(leftTime) + " - old.txt", + assertEquals(DateFormatUtil.formatPrettyDateTime(leftTime) + " - old.txt", m.getDifferenceModel().getLeftTitle(new NullRevisionsProgress())); - assertEquals(DateFormatUtil.formatDateTime(rightTime) + " - new.txt", + assertEquals(DateFormatUtil.formatPrettyDateTime(rightTime) + " - new.txt", m.getDifferenceModel().getRightTitle(new NullRevisionsProgress())); } diff --git a/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java b/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java index ff8554cb4693..5ba820cad735 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/IdeErrorsDialog.java @@ -181,7 +181,7 @@ public class IdeErrorsDialog extends DialogWrapper implements MessagePoolListene if (message != null) { StringBuffer txt = new StringBuffer(); txt.append(DiagnosticBundle.message("error.list.message.info", - DateFormatUtil.formatDateTime(message.getDate()), myModel.get(myIndex).size())); + DateFormatUtil.formatPrettyDateTime(message.getDate()), myModel.get(myIndex).size())); if (message.isSubmitted()) { final SubmittedReportInfo info = message.getSubmissionInfo(); diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerColumnInfo.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerColumnInfo.java index cd0d1c8f82f4..1020741f27f6 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerColumnInfo.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerColumnInfo.java @@ -18,15 +18,14 @@ package com.intellij.ide.plugins; import com.intellij.ide.IdeBundle; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.vcs.FileStatus; +import com.intellij.util.text.DateFormatUtil; import com.intellij.util.ui.ColumnInfo; import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; import java.awt.*; -import java.text.DateFormat; import java.util.Comparator; -import java.util.Date; /** * Created by IntelliJ IDEA. @@ -74,7 +73,7 @@ class PluginManagerColumnInfo extends ColumnInfo { // Base class IdeaPluginDescriptor does not declare this field. long date = (base instanceof PluginNode) ? ((PluginNode)base).getDate() : ((IdeaPluginDescriptorImpl)base).getDate(); if (date != 0) { - return DateFormat.getDateInstance(DateFormat.MEDIUM).format(new Date(date)); + return DateFormatUtil.formatDate(date); } else { return IdeBundle.message("plugin.info.not.available"); diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateSettingsConfigurable.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateSettingsConfigurable.java index f8027c35068d..39b73e781e3b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateSettingsConfigurable.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateSettingsConfigurable.java @@ -26,6 +26,7 @@ import com.intellij.openapi.ui.NonEmptyInputValidator; import com.intellij.openapi.util.IconLoader; import com.intellij.ui.ListUtil; import com.intellij.util.ArrayUtil; +import com.intellij.util.text.DateFormatUtil; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -34,10 +35,8 @@ import javax.swing.event.ListSelectionListener; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.text.DateFormat; import java.util.ArrayList; import java.util.Collection; -import java.util.Date; import java.util.List; /** @@ -197,10 +196,9 @@ public class UpdateSettingsConfigurable extends BaseConfigurable implements Sear } private void updateLastCheckedLabel() { - final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL); final long lastChecked = UpdateSettings.getInstance().LAST_TIME_CHECKED; myLastCheckedDate - .setText(lastChecked == 0 ? IdeBundle.message("updates.last.check.never") : dateFormat.format(new Date(lastChecked))); + .setText(lastChecked == 0 ? IdeBundle.message("updates.last.check.never") : DateFormatUtil.formatPrettyDateTime(lastChecked)); } public List getPluginsHosts() { diff --git a/platform/platform-resources-en/src/messages/VcsBundle.properties b/platform/platform-resources-en/src/messages/VcsBundle.properties index 721d60b7655b..82b68f6c7574 100644 --- a/platform/platform-resources-en/src/messages/VcsBundle.properties +++ b/platform/platform-resources-en/src/messages/VcsBundle.properties @@ -448,9 +448,9 @@ incoming.changes.refresh.progress=Refreshing incoming changes outdated.version.show.diff.action=Show Diff outdated.version.update.project.action=Update Project outdated.version.text=Outdated version. Modified by {0} on {1}: {2} -outdated.version.text.deleted=Outdated version. Deleted by {0} on {1}: {2} +outdated.version.text.deleted=Outdated version. Deleted by {0} {1}: {2} committed.changes.filter.title=Filter by -changelist.details.committed.format=Committed by {0} at {1} +changelist.details.committed.format=Committed by {0} {1} incoming.changes.indicator.tooltip={0} incoming changelists available column.name.type=Type change.type.new=New diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java index b19186239497..1af3b541bcc3 100644 --- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java +++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java @@ -35,6 +35,7 @@ import com.intellij.openapi.progress.util.ColorProgressBar; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.wm.IdeFocusManager; +import com.intellij.util.text.DateFormatUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -45,10 +46,10 @@ import javax.swing.event.TreeSelectionListener; import java.awt.*; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; /** * @author: Roman Chernyatchik @@ -199,9 +200,8 @@ public class SMTestRunnerResultsForm extends TestResultsPanel implements TestFra selectAndNotify(myTestsRootNode); myStartTime = System.currentTimeMillis(); - final Date today = new Date(myStartTime); myTestsRootNode.addSystemOutput("Testing started at " - + DateFormat.getTimeInstance(SimpleDateFormat.SHORT).format(today) + + DateFormatUtil.formatTime(myStartTime) + " ...\n"); updateStatusLabel(); diff --git a/platform/util/src/com/intellij/util/text/DateFormatUtil.java b/platform/util/src/com/intellij/util/text/DateFormatUtil.java index dad3c2d15916..750cac70c81c 100644 --- a/platform/util/src/com/intellij/util/text/DateFormatUtil.java +++ b/platform/util/src/com/intellij/util/text/DateFormatUtil.java @@ -25,9 +25,10 @@ import java.util.Date; public class DateFormatUtil { // do not expose this constants - they are very likely to be changed in future - private static final DateFormat DATE_FORMAT = DateFormat.getDateInstance(DateFormat.SHORT); - private static final DateFormat TIME_FORMAT = DateFormat.getTimeInstance(DateFormat.SHORT); - private static final DateFormat DATE_TIME_FORMAT = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); + private static final SyncDateFormat DATE_FORMAT = new SyncDateFormat(DateFormat.getDateInstance(DateFormat.SHORT)); + private static final SyncDateFormat TIME_FORMAT = new SyncDateFormat(DateFormat.getTimeInstance(DateFormat.SHORT)); + private static final SyncDateFormat DATE_TIME_FORMAT = new SyncDateFormat(DateFormat.getDateTimeInstance(DateFormat.SHORT, + DateFormat.SHORT)); public static final long SECOND = 1000; public static final long MINUTE = SECOND * 60; @@ -48,47 +49,72 @@ public class DateFormatUtil { } @NotNull - public static DateFormat getDateFormat() { + public static SyncDateFormat getDateFormat() { return DATE_FORMAT; } @NotNull - public static DateFormat getTimeFormat() { + public static SyncDateFormat getTimeFormat() { return TIME_FORMAT; } @NotNull - public static DateFormat getDateTimeFormat() { + public static SyncDateFormat getDateTimeFormat() { return DATE_TIME_FORMAT; } + @NotNull + public static String formatTime(@NotNull Date time) { + return formatTime(time.getTime()); + } + @NotNull public static String formatTime(long time) { return getTimeFormat().format(time); } + @NotNull + public static String formatDate(@NotNull Date time) { + return formatDate(time.getTime()); + } + @NotNull public static String formatDate(long time) { return getDateFormat().format(time); } @NotNull - public static String formatExactDateTime(long time) { - return getDateTimeFormat().format(time); + public static String formatPrettyDate(@NotNull Date date) { + return formatPrettyDate(date.getTime()); } @NotNull - public static String formatDateTime(Date time) { - return formatDateTime(time.getTime()); + public static String formatPrettyDate(long time) { + return doFormatPretty(time, false); + } + + @NotNull + public static String formatDateTime(Date date) { + return formatDateTime(date.getTime()); } @NotNull public static String formatDateTime(long time) { - return formatDateTime(time, DATE_TIME_FORMAT, TIME_FORMAT); + return getDateTimeFormat().format(time); } @NotNull - public static String formatDateTime(long time, @NotNull DateFormat dateTimeFormat, @NotNull DateFormat timeFormat) { + public static String formatPrettyDateTime(Date date) { + return formatPrettyDateTime(date.getTime()); + } + + @NotNull + public static String formatPrettyDateTime(long time) { + return doFormatPretty(time, true); + } + + @NotNull + public static String doFormatPretty(long time, boolean formatTime) { long currentTime = Clock.getTime(); Calendar c = Calendar.getInstance(); @@ -102,13 +128,18 @@ public class DateFormatUtil { int year = c.get(Calendar.YEAR); int dayOfYear = c.get(Calendar.DAY_OF_YEAR); - long delta = currentTime - time; - if (delta <= HOUR) { - return CommonBundle.message("date.format.minutes.ago", (int)Math.rint(delta / (double)MINUTE)); + if (formatTime) { + long delta = currentTime - time; + if (delta <= HOUR) { + return CommonBundle.message("date.format.minutes.ago", (int)Math.rint(delta / (double)MINUTE)); + } } - if (currentDayOfYear == dayOfYear) { - return CommonBundle.message("date.format.today") + " " + timeFormat.format(time); + boolean isToday = currentYear == year && currentDayOfYear == dayOfYear; + if (isToday) { + String result = CommonBundle.message("date.format.today"); + if (formatTime) result += " " + TIME_FORMAT.format(time); + return result; } boolean isYesterdayOnPreviousYear = @@ -116,10 +147,12 @@ public class DateFormatUtil { boolean isYesterday = isYesterdayOnPreviousYear || (currentYear == year && currentDayOfYear == dayOfYear + 1); if (isYesterday) { - return CommonBundle.message("date.format.yesterday") + " " + timeFormat.format(time); + String result = CommonBundle.message("date.format.yesterday"); + if (formatTime) result += " " + TIME_FORMAT.format(time); + return result; } - return dateTimeFormat.format(time); + return formatTime ? DATE_TIME_FORMAT.format(time) : DATE_FORMAT.format(time); } @NotNull diff --git a/platform/util/src/com/intellij/util/text/SyncDateFormat.java b/platform/util/src/com/intellij/util/text/SyncDateFormat.java index ff9b84b87301..55aece746e34 100644 --- a/platform/util/src/com/intellij/util/text/SyncDateFormat.java +++ b/platform/util/src/com/intellij/util/text/SyncDateFormat.java @@ -36,14 +36,22 @@ public class SyncDateFormat { return myDelegate.parse(s); } - public synchronized String format(Date d) { - return myDelegate.format(d); + public synchronized String format(Date date) { + return myDelegate.format(date); + } + + public synchronized String format(long time) { + return myDelegate.format(time); } public synchronized void setTimeZone(final TimeZone timeZone) { myDelegate.setTimeZone(timeZone); } + public DateFormat getDelegate() { + return myDelegate; + } + public synchronized String toPattern() { if (myDelegate instanceof SimpleDateFormat) { return ((SimpleDateFormat)myDelegate).toPattern(); diff --git a/platform/util/testSrc/com/intellij/util/DateFormatUtilTest.java b/platform/util/testSrc/com/intellij/util/DateFormatUtilTest.java index 46d7c517d67b..39f73aa3c30d 100644 --- a/platform/util/testSrc/com/intellij/util/DateFormatUtilTest.java +++ b/platform/util/testSrc/com/intellij/util/DateFormatUtilTest.java @@ -25,28 +25,40 @@ import java.text.SimpleDateFormat; public class DateFormatUtilTest extends TestCase{ private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy hh.mm.ss"); - protected void setUp() throws Exception { - super.setUp(); - } - - public void test() throws ParseException { + public void testPrettyDate() throws ParseException { Clock.setTime(2004, 11, 10, 17, 0); - doTest("Moments ago", "10.12.2004 16.59.31"); - doTest("A minute ago", "10.12.2004 16.59.29"); - doTest("5 minutes ago", "10.12.2004 16.55.00"); - doTest("1 hour ago", "10.12.2004 16.00.00"); - doTest("Today 3:55 PM", "10.12.2004 15.55.00"); - doTest("Yesterday 3:00 PM", "09.12.2004 15.00.00"); + doTestDate("Today", "10.12.2004 17.00.00"); + doTestDate("Today", "10.12.2004 00.00.00"); + doTestDate("Yesterday", "09.12.2004 23.59.59"); + doTestDate("12/8/04", "08.12.2004 23.59.59"); - doTest("12/8/04 3:00 PM", "08.12.2004 15.00.00"); - doTest("12/7/04 3:00 PM", "07.12.2004 15.00.00"); + doTestDate("12/10/03", "10.12.2003 17.00.00"); + } + + public void testPrettyDateTime() throws ParseException { + Clock.setTime(2004, 11, 10, 17, 0); + + doTestDateTime("Moments ago", "10.12.2004 16.59.31"); + doTestDateTime("A minute ago", "10.12.2004 16.59.29"); + doTestDateTime("5 minutes ago", "10.12.2004 16.55.00"); + doTestDateTime("1 hour ago", "10.12.2004 16.00.00"); + doTestDateTime("Today 3:55 PM", "10.12.2004 15.55.00"); + doTestDateTime("Yesterday 3:00 PM", "09.12.2004 15.00.00"); + + doTestDateTime("12/8/04 3:00 PM", "08.12.2004 15.00.00"); + doTestDateTime("12/7/04 3:00 PM", "07.12.2004 15.00.00"); Clock.setTime(2004, 0, 1, 15, 53); - doTest("Yesterday 3:00 PM", "31.12.2003 15.00.00"); + doTestDateTime("1/1/03 3:53 PM", "01.01.2003 15.53.00"); + doTestDateTime("Yesterday 3:00 PM", "31.12.2003 15.00.00"); } - private void doTest(String expected, String date) throws ParseException { - assertEquals(expected, DateFormatUtil.formatDateTime(DATE_FORMAT.parse(date))); + private void doTestDate(String expected, String date) throws ParseException { + assertEquals(expected, DateFormatUtil.formatPrettyDate(DATE_FORMAT.parse(date))); + } + + private void doTestDateTime(String expected, String date) throws ParseException { + assertEquals(expected, DateFormatUtil.formatPrettyDateTime(DATE_FORMAT.parse(date))); } } diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/ChangeListColumn.java b/platform/vcs-api/src/com/intellij/openapi/vcs/ChangeListColumn.java index 31b533d01fe3..004227714b8b 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/ChangeListColumn.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/ChangeListColumn.java @@ -25,9 +25,9 @@ package com.intellij.openapi.vcs; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.vcs.changes.ChangeList; import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList; +import com.intellij.util.text.DateFormatUtil; import org.jetbrains.annotations.Nullable; -import java.text.DateFormat; import java.util.Comparator; public abstract class ChangeListColumn { @@ -47,7 +47,7 @@ public abstract class ChangeListColumn { } public Object getValue(final CommittedChangeList changeList) { - return DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM).format(changeList.getCommitDate()); + return DateFormatUtil.formatPrettyDateTime(changeList.getCommitDate()); } public Comparator getComparator() { diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/actions/VcsRevisionListCellRenderer.java b/platform/vcs-api/src/com/intellij/openapi/vcs/actions/VcsRevisionListCellRenderer.java index 880309d12f8d..f6e7adb85bf7 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/actions/VcsRevisionListCellRenderer.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/actions/VcsRevisionListCellRenderer.java @@ -18,14 +18,11 @@ package com.intellij.openapi.vcs.actions; import com.intellij.openapi.vcs.history.VcsFileRevision; import com.intellij.ui.ColoredListCellRenderer; import com.intellij.ui.SimpleTextAttributes; +import com.intellij.util.text.DateFormatUtil; import javax.swing.*; -import java.text.DateFormat; -import java.text.SimpleDateFormat; public class VcsRevisionListCellRenderer extends ColoredListCellRenderer { - public static final DateFormat DATE_FORMAT = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT); - protected void customizeCellRenderer(JList list, Object value, int index, @@ -45,7 +42,7 @@ public class VcsRevisionListCellRenderer extends ColoredListCellRenderer { result.append(")"); } result.append(" "); - result.append(DATE_FORMAT.format(revision.getRevisionDate())); + result.append(DateFormatUtil.formatPrettyDateTime(revision.getRevisionDate())); result.append(" "); result.append(revision.getAuthor()); return result.toString(); diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/versionBrowser/DateFilterComponent.java b/platform/vcs-api/src/com/intellij/openapi/vcs/versionBrowser/DateFilterComponent.java index b2eb320dabd0..eb3658598385 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/versionBrowser/DateFilterComponent.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/versionBrowser/DateFilterComponent.java @@ -16,17 +16,16 @@ package com.intellij.openapi.vcs.versionBrowser; -import com.michaelbaranov.microba.calendar.DatePicker; -import com.intellij.ui.IdeBorderFactory; import com.intellij.openapi.vcs.VcsBundle; +import com.intellij.ui.IdeBorderFactory; +import com.intellij.util.text.DateFormatUtil; +import com.michaelbaranov.microba.calendar.DatePicker; import org.jetbrains.annotations.Nullable; import javax.swing.*; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.beans.PropertyVetoException; -import java.awt.event.ActionListener; import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.beans.PropertyVetoException; /** * @author yole @@ -41,8 +40,8 @@ public class DateFilterComponent { public DateFilterComponent() { myDatePanel.setBorder(IdeBorderFactory.createTitledHeaderBorder(VcsBundle.message("border.changes.filter.date.filter"))); - myDateAfter.setDateFormat(SimpleDateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM)); - myDateBefore.setDateFormat(SimpleDateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM)); + myDateAfter.setDateFormat(DateFormatUtil.getDateTimeFormat().getDelegate()); + myDateBefore.setDateFormat(DateFormatUtil.getDateTimeFormat().getDelegate()); ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent e) { updateAllEnabled(e); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/ChangeListDetailsAction.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/ChangeListDetailsAction.java index fcc0717dd848..dc29b805aba8 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/ChangeListDetailsAction.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/ChangeListDetailsAction.java @@ -30,6 +30,7 @@ import com.intellij.openapi.vcs.changes.ChangeList; import com.intellij.openapi.vcs.changes.issueLinks.IssueLinkHtmlRenderer; import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList; import com.intellij.ui.ScrollPaneFactory; +import com.intellij.util.text.DateFormatUtil; import com.intellij.util.ui.UIUtil; import com.intellij.xml.util.XmlStringUtil; import org.jetbrains.annotations.NonNls; @@ -37,7 +38,6 @@ import org.jetbrains.annotations.NonNls; import javax.swing.*; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; -import java.text.DateFormat; /** * @author yole @@ -61,7 +61,6 @@ public class ChangeListDetailsAction extends AnAction implements DumbAware { public static void showDetailsPopup(final Project project, final CommittedChangeList changeList) { StringBuilder detailsBuilder = new StringBuilder(""); detailsBuilder.append(UIUtil.getCssFontDeclaration(UIUtil.getLabelFont())).append(""); - DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM); final AbstractVcs vcs = changeList.getVcs(); CachingCommittedChangesProvider provider = null; if (vcs != null) { @@ -72,7 +71,7 @@ public class ChangeListDetailsAction extends AnAction implements DumbAware { } @NonNls String committer = "" + changeList.getCommitterName() + ""; detailsBuilder.append(VcsBundle.message("changelist.details.committed.format", committer, - dateFormat.format(changeList.getCommitDate()))); + DateFormatUtil.formatPrettyDateTime(changeList.getCommitDate()))); detailsBuilder.append("
"); if (provider != null) { diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/OutdatedVersionNotifier.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/OutdatedVersionNotifier.java index 2915b1c4faff..3676245b162e 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/OutdatedVersionNotifier.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/committed/OutdatedVersionNotifier.java @@ -32,11 +32,11 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.EditorNotificationPanel; import com.intellij.util.Consumer; import com.intellij.util.messages.MessageBus; +import com.intellij.util.text.DateFormatUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.text.DateFormat; import java.util.List; /** @@ -185,7 +185,6 @@ public class OutdatedVersionNotifier implements ProjectComponent { } private void updateLabelText(final Change c) { - final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); String comment = myChangeList.getComment(); int pos = comment.indexOf("\n"); if (pos >= 0) { @@ -193,7 +192,7 @@ public class OutdatedVersionNotifier implements ProjectComponent { } final String key = c.getType() == Change.Type.DELETED ? "outdated.version.text.deleted" : "outdated.version.text"; myLabel.setText(VcsBundle.message(key, myChangeList.getCommitterName(), - dateFormat.format(myChangeList.getCommitDate()), comment)); + DateFormatUtil.formatPrettyDateTime(myChangeList.getCommitDate()), comment)); } public void setChangeList(final CommittedChangeList changeList, final Change c) { diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java index 6fe1ab181cff..e22d24012a40 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelvedChangesViewManager.java @@ -51,6 +51,7 @@ import com.intellij.ui.treeStructure.Tree; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.Convertor; import com.intellij.util.messages.MessageBus; +import com.intellij.util.text.DateFormatUtil; import com.intellij.util.ui.tree.TreeUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -67,7 +68,6 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import java.io.IOException; -import java.text.SimpleDateFormat; import java.util.*; public class ShelvedChangesViewManager implements ProjectComponent { @@ -384,7 +384,7 @@ public class ShelvedChangesViewManager implements ProjectComponent { final String numFilesText = " (" + count + ((count == 1) ? " file) " : " files) "); append(numFilesText, SimpleTextAttributes.GRAY_ITALIC_ATTRIBUTES); - final String date = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT).format(changeListData.DATE); + final String date = DateFormatUtil.formatPrettyDateTime(changeListData.DATE); append(" (" + date + ")", SimpleTextAttributes.GRAYED_ATTRIBUTES); setIcon(StdFileTypes.PATCH.getIcon()); } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java index 3b21cae37483..cc6952ec1edf 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java @@ -36,10 +36,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.PanelWithActionsAndCloseButton; import com.intellij.openapi.ui.Splitter; -import com.intellij.openapi.util.Comparing; -import com.intellij.openapi.util.Getter; -import com.intellij.openapi.util.IconLoader; -import com.intellij.openapi.util.Ref; +import com.intellij.openapi.util.*; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vcs.*; import com.intellij.openapi.vcs.annotate.AnnotationProvider; @@ -68,6 +65,7 @@ import com.intellij.ui.dualView.DualView; import com.intellij.ui.dualView.DualViewColumnInfo; import com.intellij.ui.table.TableView; import com.intellij.util.*; +import com.intellij.util.text.DateFormatUtil; import com.intellij.util.ui.ColumnInfo; import com.intellij.util.ui.TableViewModel; import com.intellij.util.ui.UIUtil; @@ -95,8 +93,6 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.Charset; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.*; import java.util.List; @@ -158,7 +154,7 @@ public class FileHistoryPanelImpl myRevisionToVirtualFile = new HashMap(); public FileHistoryPanelImpl(AbstractVcs vcs, diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java index 9440f2b65aeb..9e8a91a42f1e 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java @@ -38,6 +38,7 @@ import com.intellij.openapi.vcs.history.*; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.ScrollPaneFactory; import com.intellij.ui.table.TableView; +import com.intellij.util.text.DateFormatUtil; import com.intellij.util.ui.ColumnInfo; import com.intellij.util.ui.ListTableModel; import com.intellij.util.ui.SortableColumnModel; @@ -52,8 +53,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.*; import java.util.List; @@ -66,9 +65,6 @@ public class VcsHistoryDialog extends DialogWrapper implements DataProvider { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.history.impl.VcsHistoryDialog"); private final AbstractVcs myActiveVcs; - private final static DateFormat DATE_FORMAT = SimpleDateFormat - .getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT, Locale.getDefault()); - private final DiffPanel myDiffPanel; private final Project myProject; @@ -83,7 +79,7 @@ public class VcsHistoryDialog extends DialogWrapper implements DataProvider { public Object valueOf(Object object) { Date date = ((VcsFileRevision)object).getRevisionDate(); if (date == null) return ""; - return DATE_FORMAT.format(date); + return DateFormatUtil.formatPrettyDateTime(date); } }; diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/update/UpdateInfo.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/update/UpdateInfo.java index e938f8333fc5..30efa89358a8 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/update/UpdateInfo.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/update/UpdateInfo.java @@ -16,25 +16,20 @@ package com.intellij.openapi.vcs.update; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Clock; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.JDOMExternalizable; import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.vcs.VcsBundle; +import com.intellij.util.text.DateFormatUtil; import org.jdom.Element; import org.jetbrains.annotations.NonNls; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; - public class UpdateInfo implements JDOMExternalizable { private final Project myProject; private UpdatedFiles myUpdatedFiles; private String myDate; private ActionInfo myActionInfo; - private static final DateFormat DATE_FORMAT = - SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT, Locale.getDefault()); @NonNls private static final String DATE_ATTR = "date"; @NonNls private static final String FILE_INFO_ELEMENTS = "UpdatedFiles"; @NonNls private static final String ACTION_INFO_ATTRIBUTE_NAME = "ActionInfo"; @@ -43,7 +38,7 @@ public class UpdateInfo implements JDOMExternalizable { myProject = project; myActionInfo = actionInfo; myUpdatedFiles = updatedFiles; - myDate = DATE_FORMAT.format(new Date()); + myDate = DateFormatUtil.formatPrettyDateTime(Clock.getTime()); } public UpdateInfo(Project project) { diff --git a/plugins/ant/src/com/intellij/lang/ant/config/execution/AntBuildMessageView.java b/plugins/ant/src/com/intellij/lang/ant/config/execution/AntBuildMessageView.java index ec6056522e82..d4ebc44d85b0 100644 --- a/plugins/ant/src/com/intellij/lang/ant/config/execution/AntBuildMessageView.java +++ b/plugins/ant/src/com/intellij/lang/ant/config/execution/AntBuildMessageView.java @@ -35,6 +35,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ProjectManagerListener; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.util.Clock; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Key; import com.intellij.openapi.vfs.LocalFileSystem; @@ -49,6 +50,7 @@ import com.intellij.peer.PeerFactory; import com.intellij.problems.WolfTheProblemSolver; import com.intellij.rt.ant.execution.AntMain2; import com.intellij.ui.content.*; +import com.intellij.util.text.DateFormatUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -58,9 +60,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; -import java.text.DateFormat; import java.util.ArrayList; -import java.util.Date; public final class AntBuildMessageView extends JPanel implements DataProvider, OccurenceNavigator { private static final Logger LOG = Logger.getInstance("#com.intellij.ant.execution.AntBuildMessageView"); @@ -790,7 +790,7 @@ public final class AntBuildMessageView extends JPanel implements DataProvider, O private String getFinishStatusText(boolean isAborted, long buildTimeInMilliseconds) { int errors = getErrorCount(); int warnings = getWarningCount(); - final String theDateAsString = DateFormat.getTimeInstance().format(new Date()); + final String theDateAsString = DateFormatUtil.formatDateTime(Clock.getTime()); long buildTimeInSeconds = buildTimeInMilliseconds / 1000; diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/cvsAnnotate/Annotation.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/cvsAnnotate/Annotation.java index 3d90cded01c4..fc3278c3d8e3 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/cvsAnnotate/Annotation.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/cvsAnnotate/Annotation.java @@ -15,6 +15,7 @@ */ package com.intellij.cvsSupport2.cvsoperations.cvsAnnotate; +import com.intellij.util.text.DateFormatUtil; import com.intellij.util.text.SyncDateFormat; import org.jetbrains.annotations.NonNls; @@ -31,9 +32,6 @@ public class Annotation { private final String myUser; private final Date myDate; - public static final SyncDateFormat PRESENTABELE_DATE_FORMAT = new SyncDateFormat(SimpleDateFormat.getDateInstance(SimpleDateFormat.SHORT, - Locale.getDefault())); - @NonNls private static final String DATE_FORMAT_STRING = "dd-MMM-yy"; private final static SyncDateFormat DATE_FORMAT = new SyncDateFormat(new SimpleDateFormat(DATE_FORMAT_STRING, Locale.US)); public static final String CONTENT_SEPARATOR = ": "; @@ -64,7 +62,7 @@ public class Annotation { public Date getDate() { return myDate; } public String getPresentableDateString() { - return PRESENTABELE_DATE_FORMAT.format(getDate()); + return DateFormatUtil.formatPrettyDate(getDate()); } public static String createMessageOn(String message) { diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/cvsEdit/ui/EditorsPanel.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/cvsEdit/ui/EditorsPanel.java index 5ea637267a32..2030568aa61b 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/cvsEdit/ui/EditorsPanel.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/cvsEdit/ui/EditorsPanel.java @@ -29,14 +29,13 @@ import com.intellij.ui.ScrollPaneFactory; import com.intellij.ui.table.TableView; import com.intellij.util.EditSourceOnDoubleClickHandler; import com.intellij.util.EditSourceOnEnterKeyHandler; +import com.intellij.util.text.DateFormatUtil; import com.intellij.util.ui.ColumnInfo; import com.intellij.util.ui.ListTableModel; import javax.swing.*; import java.awt.*; import java.io.File; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.Comparator; import java.util.List; @@ -46,9 +45,6 @@ import java.util.List; */ public class EditorsPanel extends JPanel implements TypeSafeDataProvider { - public static final DateFormat DATE_FORMAT = - SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT); - private final ListTableModel myModel = new ListTableModel(COLUMNS); private final TableView myTable = new TableView(myModel); @@ -82,7 +78,7 @@ public class EditorsPanel extends JPanel implements TypeSafeDataProvider { private final static ColumnInfo DATE = new ColumnInfo(CvsBundle.message("view.editors.date.column.name")){ public String valueOf(EditorInfo object) { - return DATE_FORMAT.format(object.getEditDate()); + return DateFormatUtil.formatPrettyDateTime(object.getEditDate()); } public Comparator getComparator() { diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/dateOrRevision/ui/DateOrRevisionOrTagSettings.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/dateOrRevision/ui/DateOrRevisionOrTagSettings.java index 5c85185e9e2b..54111f11ba8c 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/dateOrRevision/ui/DateOrRevisionOrTagSettings.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/cvsoperations/dateOrRevision/ui/DateOrRevisionOrTagSettings.java @@ -20,6 +20,7 @@ import com.intellij.cvsSupport2.cvsoperations.cvsTagOrBranch.TagsHelper; import com.intellij.cvsSupport2.cvsoperations.cvsTagOrBranch.TagsProvider; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.TextFieldWithBrowseButton; +import com.intellij.util.text.DateFormatUtil; import com.intellij.util.text.SyncDateFormat; import com.michaelbaranov.microba.calendar.DatePicker; import org.jetbrains.annotations.NonNls; @@ -28,12 +29,11 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.beans.PropertyVetoException; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.text.DateFormat; import java.util.Date; import java.util.Locale; -import java.beans.PropertyVetoException; /** * author: lesya @@ -57,7 +57,7 @@ public class DateOrRevisionOrTagSettings { public DateOrRevisionOrTagSettings(TagsProvider tagsProvider, Project project, final boolean forTemporaryConfiguration) { myTagsProvider = tagsProvider; myProject = project; - myDatePicker.setDateFormat(SimpleDateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM)); + myDatePicker.setDateFormat(DateFormatUtil.getDateTimeFormat().getDelegate()); myUseBranch.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { diff --git a/plugins/git4idea/src/git4idea/annotate/GitFileAnnotation.java b/plugins/git4idea/src/git4idea/annotate/GitFileAnnotation.java index 4fdafdd79da3..6274c759bb11 100644 --- a/plugins/git4idea/src/git4idea/annotate/GitFileAnnotation.java +++ b/plugins/git4idea/src/git4idea/annotate/GitFileAnnotation.java @@ -29,13 +29,12 @@ import com.intellij.openapi.vfs.VirtualFileAdapter; import com.intellij.openapi.vfs.VirtualFileEvent; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.util.EventDispatcher; -import com.intellij.util.text.SyncDateFormat; +import com.intellij.util.text.DateFormatUtil; import git4idea.GitRevisionNumber; import git4idea.actions.GitShowAllSubmittedFilesAction; import git4idea.i18n.GitBundle; import org.jetbrains.annotations.NotNull; -import java.text.SimpleDateFormat; import java.util.*; /** @@ -46,10 +45,6 @@ import java.util.*; public class GitFileAnnotation implements FileAnnotation { private final static Logger LOG = Logger.getInstance("#git4idea.annotate.GitFileAnnotation"); - /** - * the format of the date shown in annotations - */ - private static final SyncDateFormat DATE_FORMAT = new SyncDateFormat(SimpleDateFormat.getDateInstance(SimpleDateFormat.SHORT)); /** * annotated content */ @@ -89,7 +84,7 @@ public class GitFileAnnotation implements FileAnnotation { private final LineAnnotationAspect DATE_ASPECT = new GitAnnotationAspect() { public String doGetValue(LineInfo info) { final Date date = info.getDate(); - return date == null ? "" : DATE_FORMAT.format(date); + return date == null ? "" : DateFormatUtil.formatPrettyDate(date); } }; diff --git a/plugins/git4idea/src/git4idea/checkin/GitPushRebaseProcess.java b/plugins/git4idea/src/git4idea/checkin/GitPushRebaseProcess.java index 64fd596d0fc4..1c29040f5e6c 100644 --- a/plugins/git4idea/src/git4idea/checkin/GitPushRebaseProcess.java +++ b/plugins/git4idea/src/git4idea/checkin/GitPushRebaseProcess.java @@ -17,9 +17,11 @@ package git4idea.checkin; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Clock; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.text.DateFormatUtil; import git4idea.GitBranch; import git4idea.GitUtil; import git4idea.GitVcs; @@ -36,8 +38,10 @@ import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; -import java.text.DateFormat; -import java.util.*; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; /** * This is subclass of {@link git4idea.update.GitBaseRebaseProcess} that implement rebase operation for {@link GitPushActiveBranchesDialog}. @@ -145,7 +149,7 @@ public class GitPushRebaseProcess extends GitBaseRebaseProcess { @Override protected String makeStashMessage() { return "Uncommitted changes before rebase operation in push dialog at " + - DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.US).format(new Date()); + DateFormatUtil.formatDateTime(Clock.getTime()); } /** diff --git a/plugins/git4idea/src/git4idea/history/browser/GitLogTree.java b/plugins/git4idea/src/git4idea/history/browser/GitLogTree.java index 604787bb1847..7c8491bc0e21 100644 --- a/plugins/git4idea/src/git4idea/history/browser/GitLogTree.java +++ b/plugins/git4idea/src/git4idea/history/browser/GitLogTree.java @@ -46,6 +46,7 @@ import com.intellij.ui.components.JBList; import com.intellij.ui.treeStructure.Tree; import com.intellij.util.*; import com.intellij.util.containers.Convertor; +import com.intellij.util.text.DateFormatUtil; import com.intellij.util.ui.UIUtil; import git4idea.history.GitUsersComponent; import org.jetbrains.annotations.NotNull; @@ -59,7 +60,6 @@ import javax.swing.tree.DefaultTreeModel; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; -import java.text.DateFormat; import java.util.*; import java.util.List; import java.util.concurrent.atomic.AtomicReference; @@ -720,8 +720,6 @@ public class GitLogTree implements GitTreeViewI { } } - private final static DateFormat ourDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); - private class MyCompoundCellRenderer implements ListCellRenderer { private final JPanel myPanel; private final MyTextPartRenderer myTextPartRenderer; @@ -831,7 +829,7 @@ public class GitLogTree implements GitTreeViewI { list.add(new Pair(node.getDescription() + " ", SimpleTextAttributes.REGULAR_ATTRIBUTES)); list.add(new Pair(node.getAuthor() + ", ", SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES)); // 7-8 - list.add(new Pair(ourDateFormat.format(node.getDate()), SimpleTextAttributes.REGULAR_ATTRIBUTES)); + list.add(new Pair(DateFormatUtil.formatPrettyDateTime(node.getDate()), SimpleTextAttributes.REGULAR_ATTRIBUTES)); return new Description(1, list) { @Override public String getMaxString(int idx) { diff --git a/plugins/git4idea/src/git4idea/update/GitUpdateProcess.java b/plugins/git4idea/src/git4idea/update/GitUpdateProcess.java index fc796ef02228..b843000c530c 100644 --- a/plugins/git4idea/src/git4idea/update/GitUpdateProcess.java +++ b/plugins/git4idea/src/git4idea/update/GitUpdateProcess.java @@ -16,9 +16,11 @@ package git4idea.update; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Clock; import com.intellij.openapi.vcs.VcsException; import com.intellij.openapi.vcs.update.UpdatedFiles; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.text.DateFormatUtil; import git4idea.GitRevisionNumber; import git4idea.GitVcs; import git4idea.commands.GitCommand; @@ -26,10 +28,7 @@ import git4idea.commands.GitLineHandler; import git4idea.config.GitVcsSettings; import git4idea.merge.MergeChangeCollector; -import java.text.DateFormat; -import java.util.Date; import java.util.List; -import java.util.Locale; /** * This class encapsulates update operation from update environment. This allows to customize this operation when needed. @@ -120,7 +119,7 @@ public class GitUpdateProcess extends GitBaseRebaseProcess { @Override protected String makeStashMessage() { return "Uncommitted changes before update operation at " + - DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.US).format(new Date()); + DateFormatUtil.formatDateTime(Clock.getTime()); } /** diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenServicesConfigurable.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenServicesConfigurable.java index a85eab8b70ed..082263f6aae2 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenServicesConfigurable.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenServicesConfigurable.java @@ -28,6 +28,7 @@ import com.intellij.ui.CollectionListModel; import com.intellij.ui.ListUtil; import com.intellij.ui.components.JBList; import com.intellij.util.Processor; +import com.intellij.util.text.DateFormatUtil; import com.intellij.util.ui.AnimatedIcon; import com.intellij.util.ui.AsyncProcessIcon; import org.jetbrains.idea.maven.model.MavenRepositoryInfo; @@ -35,7 +36,6 @@ import org.jetbrains.idea.maven.services.MavenServicesManager; import org.jetbrains.idea.maven.utils.RepositoryAttachHandler; import javax.swing.*; -import javax.swing.Timer; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; @@ -47,8 +47,9 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import java.net.MalformedURLException; import java.net.URL; -import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; public class MavenServicesConfigurable extends BaseConfigurable implements SearchableConfigurable{ @@ -291,7 +292,7 @@ public class MavenServicesConfigurable extends BaseConfigurable implements Searc } long timestamp = i.getUpdateTimestamp(); if (timestamp == -1) return IndicesBundle.message("maven.index.updated.never"); - return SimpleDateFormat.getDateInstance(SimpleDateFormat.SHORT).format(new Date(timestamp)); + return DateFormatUtil.formatDate(timestamp); case 3: return myManager.getUpdatingState(i); } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/actions/SelectBranchPopup.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/actions/SelectBranchPopup.java index aaf411700d09..07fffc508e01 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/actions/SelectBranchPopup.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/actions/SelectBranchPopup.java @@ -27,6 +27,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.components.JBList; import com.intellij.util.Consumer; import com.intellij.util.concurrency.Semaphore; +import com.intellij.util.text.DateFormatUtil; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -41,10 +42,7 @@ import org.tmatesoft.svn.core.internal.util.SVNPathUtil; import javax.swing.*; import java.awt.*; import java.io.File; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.List; /** @@ -304,7 +302,7 @@ public class SelectBranchPopup { SvnBranchItem item = (SvnBranchItem) value; myUrlLabel.setText(SVNPathUtil.tail(item.getUrl())); final long creationMillis = item.getCreationDateMillis(); - myDateLabel.setText((creationMillis > 0) ? SimpleDateFormat.getDateInstance(DateFormat.SHORT).format(new Date(creationMillis)) : ""); + myDateLabel.setText((creationMillis > 0) ? DateFormatUtil.formatDate(creationMillis) : ""); } return this; } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/annotate/SvnFileAnnotation.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/annotate/SvnFileAnnotation.java index 01744c70804f..5ead2181c344 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/annotate/SvnFileAnnotation.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/annotate/SvnFileAnnotation.java @@ -19,7 +19,7 @@ import com.intellij.openapi.vcs.annotate.*; import com.intellij.openapi.vcs.history.VcsFileRevision; import com.intellij.openapi.vcs.history.VcsRevisionNumber; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.util.text.SyncDateFormat; +import com.intellij.util.text.DateFormatUtil; import com.intellij.xml.util.XmlStringUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -29,13 +29,11 @@ import org.jetbrains.idea.svn.SvnVcs; import org.jetbrains.idea.svn.actions.ShowAllSubmittedFilesAction; import org.jetbrains.idea.svn.history.SvnFileRevision; -import java.text.SimpleDateFormat; import java.util.*; public class SvnFileAnnotation implements FileAnnotation { private final String myContents; private final MyPartiallyCreatedInfos myInfos; - private static final SyncDateFormat DATE_FORMAT = new SyncDateFormat(SimpleDateFormat.getDateInstance(SimpleDateFormat.SHORT)); private final SvnVcs myVcs; private final VirtualFile myFile; @@ -49,7 +47,7 @@ public class SvnFileAnnotation implements FileAnnotation { } else { final LineInfo lineInfo = myInfos.get(lineNumber); - return (lineInfo == null) ? "" : DATE_FORMAT.format(lineInfo.getDate()); + return (lineInfo == null) ? "" : DateFormatUtil.formatPrettyDate(lineInfo.getDate()); } } };