📄 displayformatters.java
字号:
if (done == -1)
done = 1000;
tmp = (new StringBuilder()).append(ManagerItem_seeding).append(" + ").append(ManagerItem_checking).append(": ").append(formatPercentFromThousands(done)).toString();
} else
if (manager.getPeerManager() != null && manager.getPeerManager().isSuperSeedMode())
tmp = ManagerItem_superseeding;
else
tmp = ManagerItem_seeding;
break;
case 70: // 'F'
tmp = manager.isPaused() ? ManagerItem_paused : ManagerItem_stopped;
break;
case 100: // 'd'
tmp = (new StringBuilder()).append(ManagerItem_error).append(": ").append(manager.getErrorDetails()).toString();
break;
case 0: // '\0'
tmp = ManagerItem_waiting;
break;
case 5: // '\005'
tmp = ManagerItem_initializing;
break;
case 10: // '\n'
tmp = ManagerItem_initializing;
break;
case 20: // '\024'
tmp = ManagerItem_allocating;
break;
case 30: // '\036'
tmp = (new StringBuilder()).append(ManagerItem_checking).append(": ").append(formatPercentFromThousands(manager.getStats().getCompleted())).toString();
break;
case 55: // '7'
tmp = ManagerItem_finishing;
break;
case 40: // '('
tmp = ManagerItem_ready;
break;
case 65: // 'A'
tmp = ManagerItem_stopping;
break;
default:
tmp = String.valueOf(state);
break;
}
if (manager.isForceStart() && (state == 60 || state == 50))
tmp = (new StringBuilder()).append(ManagerItem_forced).append(" ").append(tmp).toString();
return tmp;
}
public static String formatDownloadStatusDefaultLocale(DownloadManager manager)
{
int state = manager.getState();
String tmp = "";
DiskManager dm = manager.getDiskManager();
switch (state)
{
case 0: // '\0'
tmp = MessageText.getDefaultLocaleString("ManagerItem.waiting");
break;
case 5: // '\005'
tmp = MessageText.getDefaultLocaleString("ManagerItem.initializing");
break;
case 10: // '\n'
tmp = MessageText.getDefaultLocaleString("ManagerItem.initializing");
break;
case 20: // '\024'
tmp = MessageText.getDefaultLocaleString("ManagerItem.allocating");
break;
case 30: // '\036'
tmp = MessageText.getDefaultLocaleString("ManagerItem.checking");
break;
case 55: // '7'
tmp = MessageText.getDefaultLocaleString("ManagerItem.finishing");
break;
case 40: // '('
tmp = MessageText.getDefaultLocaleString("ManagerItem.ready");
break;
case 50: // '2'
tmp = MessageText.getDefaultLocaleString("ManagerItem.downloading");
break;
case 60: // '<'
if (dm != null && dm.getCompleteRecheckStatus() != -1)
{
int done = dm.getCompleteRecheckStatus();
if (done == -1)
done = 1000;
tmp = (new StringBuilder()).append(MessageText.getDefaultLocaleString("ManagerItem.seeding")).append(" + ").append(MessageText.getDefaultLocaleString("ManagerItem.checking")).append(": ").append(formatPercentFromThousands(done)).toString();
break;
}
if (manager.getPeerManager() != null && manager.getPeerManager().isSuperSeedMode())
tmp = MessageText.getDefaultLocaleString("ManagerItem.superseeding");
else
tmp = MessageText.getDefaultLocaleString("ManagerItem.seeding");
break;
case 65: // 'A'
tmp = MessageText.getDefaultLocaleString("ManagerItem.stopping");
break;
case 70: // 'F'
tmp = MessageText.getDefaultLocaleString(manager.isPaused() ? "ManagerItem.paused" : "ManagerItem.stopped");
break;
case 75: // 'K'
tmp = MessageText.getDefaultLocaleString("ManagerItem.queued");
break;
case 100: // 'd'
tmp = MessageText.getDefaultLocaleString("ManagerItem.error").concat(": ").concat(manager.getErrorDetails());
break;
default:
tmp = String.valueOf(state);
break;
}
return tmp;
}
public static String trimDigits(String str, int num_digits)
{
char chars[] = str.toCharArray();
String res = "";
int digits = 0;
for (int i = 0; i < chars.length; i++)
{
char c = chars[i];
if (Character.isDigit(c))
{
if (++digits <= num_digits)
res = (new StringBuilder()).append(res).append(c).toString();
continue;
}
if (c != '.' || digits < 3)
res = (new StringBuilder()).append(res).append(c).toString();
}
return res;
}
public static String formatPercentFromThousands(int thousands)
{
return percentage_format.format((double)thousands / 1000D);
}
public static String formatTimeStamp(long time)
{
StringBuffer sb = new StringBuffer();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(time);
sb.append('[');
sb.append(formatIntToTwoDigits(calendar.get(5)));
sb.append('.');
sb.append(formatIntToTwoDigits(calendar.get(2) + 1));
sb.append('.');
sb.append(calendar.get(1));
sb.append(' ');
sb.append(formatIntToTwoDigits(calendar.get(11)));
sb.append(':');
sb.append(formatIntToTwoDigits(calendar.get(12)));
sb.append(':');
sb.append(formatIntToTwoDigits(calendar.get(13)));
sb.append(']');
return sb.toString();
}
public static String formatIntToTwoDigits(int n)
{
return n >= 10 ? String.valueOf(n) : "0".concat(String.valueOf(n));
}
private static String formatDate(long date, String format)
{
if (date == 0L)
{
return "";
} else
{
SimpleDateFormat temp = new SimpleDateFormat(format);
return temp.format(new Date(date));
}
}
public static String formatDate(long date)
{
return formatDate(date, "dd-MMM-yyyy HH:mm:ss");
}
public static String formatDateShort(long date)
{
return formatDate(date, "MMM dd, HH:mm");
}
public static String formatDateNum(long date)
{
return formatDate(date, "yyyy-MM-dd HH:mm:ss");
}
public static String formatCustomDateOnly(long date)
{
if (date == 0L)
return "";
else
return formatDate(date, "dd-MMM-yyyy");
}
public static String formatCustomTimeOnly(long date)
{
return formatCustomTimeOnly(date, true);
}
public static String formatCustomTimeOnly(long date, boolean with_secs)
{
if (date == 0L)
return "";
else
return formatDate(date, with_secs ? "HH:mm:ss" : "HH:mm");
}
public static String formatCustomDateTime(long date)
{
if (date == 0L)
return "";
else
return formatDate(date);
}
public static String formatTime(long time)
{
return TimeFormatter.formatColon(time / 1000L);
}
public static String formatDecimal(double value, int precision)
{
return formatDecimal(value, precision, false, true);
}
public static String formatDecimal(double value, int precision, boolean bTruncateZeros, boolean bRound)
{
if (Double.isNaN(value) || Double.isInfinite(value))
return "∞";
double tValue;
if (bRound)
tValue = value;
else
if (precision == 0)
{
tValue = (long)value;
} else
{
double shift = Math.pow(10D, precision);
tValue = (double)(long)(value * shift) / shift;
}
int cache_index = (precision << 2) + ((bTruncateZeros ? 1 : 0) << 1) + (bRound ? 1 : 0);
NumberFormat nf = null;
if (cache_index < cached_number_formats.length)
nf = cached_number_formats[cache_index];
if (nf == null)
{
nf = NumberFormat.getNumberInstance();
nf.setGroupingUsed(false);
if (!bTruncateZeros)
nf.setMinimumFractionDigits(precision);
if (bRound)
nf.setMaximumFractionDigits(precision);
if (cache_index < cached_number_formats.length)
cached_number_formats[cache_index] = nf;
}
return nf.format(tValue);
}
public static String truncateString(String str, int width)
{
int excess = str.length() - width;
if (excess <= 0)
return str;
excess += 3;
int token_start = -1;
int max_len = 0;
int max_start = 0;
for (int i = 0; i < str.length(); i++)
{
char c = str.charAt(i);
if (Character.isLetterOrDigit(c) || c == '-' || c == '~')
{
if (token_start == -1)
{
token_start = i;
continue;
}
int len = i - token_start;
if (len > max_len)
{
max_len = len;
max_start = token_start;
}
} else
{
token_start = -1;
}
}
if (max_len >= excess)
{
int trim_point = max_start + max_len;
return (new StringBuilder()).append(str.substring(0, trim_point - excess)).append("...").append(str.substring(trim_point)).toString();
} else
{
return (new StringBuilder()).append(str.substring(0, width - 3)).append("...").toString();
}
}
public static void main(String args[])
{
double d = 3.9916307748216347E-006D;
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(6);
nf.setMinimumFractionDigits(6);
String s = nf.format(d);
System.out.println((new StringBuilder()).append("Actual: ").append(d).toString());
System.out.println((new StringBuilder()).append("NF/6: ").append(s).toString());
System.out.println((new StringBuilder()).append("DF: ").append(formatDecimal(d, 6)).toString());
System.out.println((new StringBuilder()).append("DF 0: ").append(formatDecimal(d, 0)).toString());
System.out.println((new StringBuilder()).append("0.000000:").append(formatDecimal(0.0D, 6)).toString());
System.out.println((new StringBuilder()).append("0.001:").append(formatDecimal(0.001D, 6, true, true)).toString());
System.out.println((new StringBuilder()).append("0:").append(formatDecimal(0.0D, 0)).toString());
System.out.println((new StringBuilder()).append("123456:").append(formatDecimal(123456D, 0)).toString());
System.out.println((new StringBuilder()).append("123456:").append(formatDecimal(123456.999D, 0)).toString());
System.out.println(formatDecimal((0.0D / 0.0D), 3));
}
public static char getDecimalSeparator()
{
return decimalSeparator;
}
static
{
COConfigurationManager.addParameterListener("config.style.useSIUnits", new ParameterListener() {
public void parameterChanged(String value)
{
DisplayFormatters.use_si_units = COConfigurationManager.getBooleanParameter("config.style.useSIUnits");
DisplayFormatters.setUnits();
}
});
COConfigurationManager.addParameterListener("config.style.useUnitsRateBits", new ParameterListener() {
public void parameterChanged(String value)
{
DisplayFormatters.use_units_rate_bits = COConfigurationManager.getBooleanParameter("config.style.useUnitsRateBits");
DisplayFormatters.setUnits();
}
});
not_use_GB_TB = COConfigurationManager.getBooleanParameter("config.style.doNotUseGB");
unitsStopAt = not_use_GB_TB ? 2 : 4;
COConfigurationManager.addParameterListener("config.style.doNotUseGB", new ParameterListener() {
public void parameterChanged(String value)
{
DisplayFormatters.not_use_GB_TB = COConfigurationManager.getBooleanParameter("config.style.doNotUseGB");
DisplayFormatters.unitsStopAt = DisplayFormatters.not_use_GB_TB ? 2 : 4;
DisplayFormatters.setUnits();
}
});
COConfigurationManager.addListener(new COConfigurationListener() {
public void configurationSaved()
{
DisplayFormatters.setUnits();
DisplayFormatters.loadMessages();
}
});
COConfigurationManager.addAndFireParameterListeners(new String[] {
"config.style.dataStatsOnly", "config.style.separateProtDataStats"
}, new ParameterListener() {
public void parameterChanged(String x)
{
DisplayFormatters.separate_prot_data_stats = COConfigurationManager.getBooleanParameter("config.style.separateProtDataStats");
DisplayFormatters.data_stats_only = COConfigurationManager.getBooleanParameter("config.style.dataStatsOnly");
}
});
setUnits();
loadMessages();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -