- package up a syndie-${syndie.version}.bin.jar-only.zip for upgrading syndie.jar only

- let the user decide whether they want to browse messages by "creation" date or by
local import date, and show the corresponding date in the tree (good call Complication)
This commit is contained in:
jrandom
2006-12-25 11:24:01 +00:00
parent 4eebdef8e3
commit a8756e1471
8 changed files with 815 additions and 794 deletions

1233
build.xml

File diff suppressed because it is too large Load Diff

View File

@ -1,139 +1,142 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Syndie - download</title>
<link rel="stylesheet" href="style.css" type="text/css" title="normal" media="screen" />
</head>
<body>
<div style="display: none"><a href="#Content" title="Skip navigation" accesskey="2">Skip navigation</a></div>
<div id="Header">
<a href="index.html" title="Syndie">Syndie</a><i> - distributed forums</i>
</div>
<div id="Menu">
<a href="index.html" title="Home">Home</a><br />
<a href="download.html" title="Download Syndie">Download</a><br />
<a href="features.html" title="Syndie Features">Features</a><br />
<a href="usecases.html" title="Use cases">Use cases</a><br />
<a href="faq.html" title="Frequently Asked Questions">Faq</a><br />
<a href="roadmap.html" title="Roadmap">Roadmap</a><br />
<a href="dev.html" title="Developers">Developers</a><br />
<a href="manual.html" title="">Manual</a><br />
<a href="donate.html" title="Help Syndie">Donate</a><br />
<a href="related.html" title="Related projects">Related projects</a><br />
<a href="about.html" title="About Syndie">About</a><br />
<hr />
<a href="http://forum.i2p.net/viewforum.php?f=29">Forum</a>
</div>
<div id="Content">
<h1>Download</h1>
<!--
Windows binaries:<ul>
<li><a href="http://syndie.i2p.net/dist/syndie-0.917b.win.exe">syndie-0.917b.win.exe</a>
(<a href="http://syndie.i2p.net/dist/syndie-0.917b.win.exe.sig">GPG signature</a>) <b>[note: does not yet exist]</b></li>
<li>Download and run the executable installer.</li>
<li>Prerequisites: None</li>
</ul>
-->
<h4>Standalone installers: <font size="-3">grab <i>one</i></font></h3>
<ul>
<li><b><a href="dist/syndie-0.920a.bin.win32.exe">Windows - syndie-0.920a.bin.win32.exe</a></b>
(<a href="dist/syndie-0.920a.bin.win32.exe.sig">GPG signature</a>) - 4.4MB<br />
Download and run the installer. Launch Syndie with the desktop or start
menu icons, or with <code>syndie.exe</code></li>
<li><b><a href="dist/syndie-0.920a.bin.linux32.exe">Linux - syndie-0.920a.bin.linux32.exe</a></b>
(<a href="dist/syndie-0.920a.bin.linux32.exe.sig">GPG signature</a>) - 4.3MB<br />
Download and run the installer via
"<code>java -jar syndie-0.920a.bin.linux32.exe</code>" (<i>yes, really</i>).
Launch Syndie with the desktop or KDE menu icons, or with
"<code>java -jar bin/syndie.exe</code>".</li>
<li><b><a href="dist/syndie-0.920a.bin.osx.exe">OSX - syndie-0.920a.bin.osx.exe</a></b>
(<a href="dist/syndie-0.920a.bin.osx.exe.sig">GPG signature</a>) - 4.4MB<br />
Download and run the installer via
"<code>java -jar syndie-0.920a.bin.osx.exe</code>" (<i>yes, really</i>).
Launch Syndie with the icon, or with
"<code>java -jar bin/syndie.exe</code>".</li>
<li><a href="dist/syndie-0.920a.bin.nodeps.exe">Any platform - syndie-0.920a.bin.nodeps.exe</a>
(<a href="dist/syndie-0.920a.bin.nodeps.exe.sig">GPG signature</a>) - 2.1MB<br />
does not include <a href="http://eclipse.org/swt/">SWT</a> or
<a href="http://www.hsqldb.org/">HSQLDB</a>, so <b>only use this if
upgrading</b> or can otherwise arrange to have <code>swt.jar</code> and
<code>hsqldb.jar</code> in your Syndie <code>lib/</code> directory.</li>
<li><a href="dist/syndie-0.920a.bin.zip">Headless - syndie-0.920a.bin.zip</a>
(<a href="dist/syndie-0.920a.bin.zip.sig">GPG signature</a>) - 2.2MB<br />
This unzips into <code>./syndie-0.920a</code> and does not create any
desktop or start menu shortcuts, but can be used on computers without a
graphical interface.<br />
To run Syndie without a GUI, launch it as above, but with the parameter
<code>--cli</code>.</li>
<li>Prerequisites:
<a href="http://java.sun.com/javase/downloads/index.jsp">jre1.4+</a>,
<a href="http://gcc.gnu.org/java/">GCJ/GIJ 4.0+</a>, or
<a href="http://www.kaffe.org/">Kaffe 1.1.7+</a>
(other JVMs may suffice)</li>
</ul>
<h4>Source:</h4>
<ul>
<li><a href="dist/syndie-0.920a.src.tar.bz2">syndie-0.920a.src.tar.bz2</a>
(<a href="dist/syndie-0.920a.src.tar.bz2.sig">GPG signature</a>) - 1.2MB</li>
<li><a href="dist/syndie-0.920a.src.nodeps.tar.bz2">syndie-0.920a.src.nodeps.tar.bz2</a>
(<a href="dist/syndie-0.920a.src.nodeps.tar.bz2.sig">GPG signature</a>) - 0.5MB</li>
<li>Download and extract the archive, then read the INSTALL file</li>
<li>Prerequisites:
<a href="http://ant.apache.org/">ant 1.6.5</a>,
<a href="http://java.sun.com/javase/downloads/index.jsp">jdk1.4+</a>/
<a href="http://gcc.gnu.org/java/">GCJ/GIJ 4.0+</a>/ or
<a href="http://www.kaffe.org/">Kaffe 1.1.7+</a>
(other JDKs may suffice),
<a href="http://www.eclipse.org/swt/">SWT 3.2+</a> (3.3M4 or newer includes
useful features),
<a href="http://www.hsqldb.org/">HSQLDB 1.8.0.7+</a> (older releases may
work)</li>
</ul>
<p>Older releases are <a href="dist/">archived</a></p>
<!--
Gentoo:<ul>
<li><code>emerge syndie</code></li>
Debian:<ul>
<li><code>apt-get syndie</code></li>
-->
<p>The GPG public key used to sign the distributed files is <code>393F2DF9</code> (fingerprint <code>AE89 D080 0E85 72F0 B777 B2ED C2FA 68C0 393F 2DF9</code>)</p>
<h4>Unreleased development source:</h4>
<ul>
<li>A public <a href="http://venge.net/monotone/">monotone</a> repository of the
syndie code is available on the netsync server <code>mtn.i2p.net</code>
in the <code>syndie</code> branch.<br />
<i>Not familiar with monotone? See this <a href="monotone_howto.html">howto</a></i></li>
<li>Developers are granted write permission to that repository, and everyone
is granted read permission.</li>
<li>The list of authorized committers can be found in the mtn-committers
file, which includes their monotone public keys, ready to be imported
with <code>cat mtn-committers | monotone read</code>. That file can be
verified against the above GPG public key with
<code>gpg --verify mtn-committers.sig</code>.</li>
</ul>
<p><b>To upgrade or reinstall</b>, simply install Syndie again on top of itself.
Upgrading or reinstalling does not affect your content or keys, just the
software. To completely wipe any old data, identities, or keys, delete the
<code>$HOME/.syndie</code> directory.</p>
<p><b>To uninstall</b>, if you used the installer and created desktop icons or
start menu shortcuts, simply launch the included uninstaller. Otherwise, just
remove the directory you installed Syndie into (e.g. <code>$HOME/syndie</code> or
<code>C:\Documents and Settings\User\syndie</code>).</p>
<p>The Syndie content is stored in <code>$HOME/.syndie</code> or
<code>%HOME%\.syndie</code> by default, so you should delete that directory as
well if you want to remove the content (and private keys!). To use another
location (or to run multiple instances at once), simply pass another root
directory on the command line (e.g. <code>syndie.exe C:\nym1</code>)</p>
</div>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Syndie - download</title>
<link rel="stylesheet" href="style.css" type="text/css" title="normal" media="screen" />
</head>
<body>
<div style="display: none"><a href="#Content" title="Skip navigation" accesskey="2">Skip navigation</a></div>
<div id="Header">
<a href="index.html" title="Syndie">Syndie</a><i> - distributed forums</i>
</div>
<div id="Menu">
<a href="index.html" title="Home">Home</a><br />
<a href="download.html" title="Download Syndie">Download</a><br />
<a href="features.html" title="Syndie Features">Features</a><br />
<a href="usecases.html" title="Use cases">Use cases</a><br />
<a href="faq.html" title="Frequently Asked Questions">Faq</a><br />
<a href="roadmap.html" title="Roadmap">Roadmap</a><br />
<a href="dev.html" title="Developers">Developers</a><br />
<a href="manual.html" title="">Manual</a><br />
<a href="donate.html" title="Help Syndie">Donate</a><br />
<a href="related.html" title="Related projects">Related projects</a><br />
<a href="about.html" title="About Syndie">About</a><br />
<hr />
<a href="http://forum.i2p.net/viewforum.php?f=29">Forum</a>
</div>
<div id="Content">
<h1>Download</h1>
<!--
Windows binaries:<ul>
<li><a href="http://syndie.i2p.net/dist/syndie-0.917b.win.exe">syndie-0.917b.win.exe</a>
(<a href="http://syndie.i2p.net/dist/syndie-0.917b.win.exe.sig">GPG signature</a>) <b>[note: does not yet exist]</b></li>
<li>Download and run the executable installer.</li>
<li>Prerequisites: None</li>
</ul>
-->
<h4>Standalone installers: <font size="-3">grab <i>one</i></font></h3>
<ul>
<li><b><a href="dist/syndie-0.920a.bin.win32.exe">Windows - syndie-0.920a.bin.win32.exe</a></b>
(<a href="dist/syndie-0.920a.bin.win32.exe.sig">GPG signature</a>) - 4.4MB<br />
Download and run the installer. Launch Syndie with the desktop or start
menu icons, or with <code>syndie.exe</code></li>
<li><b><a href="dist/syndie-0.920a.bin.linux32.exe">Linux - syndie-0.920a.bin.linux32.exe</a></b>
(<a href="dist/syndie-0.920a.bin.linux32.exe.sig">GPG signature</a>) - 4.3MB<br />
Download and run the installer via
"<code>java -jar syndie-0.920a.bin.linux32.exe</code>" (<i>yes, really</i>).
Launch Syndie with the desktop or KDE menu icons, or with
"<code>java -jar bin/syndie.exe</code>".</li>
<li><b><a href="dist/syndie-0.920a.bin.osx.exe">OSX - syndie-0.920a.bin.osx.exe</a></b>
(<a href="dist/syndie-0.920a.bin.osx.exe.sig">GPG signature</a>) - 4.4MB<br />
Download and run the installer via
"<code>java -jar syndie-0.920a.bin.osx.exe</code>" (<i>yes, really</i>).
Launch Syndie with the icon, or with
"<code>java -jar bin/syndie.exe</code>".</li>
<li><a href="dist/syndie-0.920a.bin.nodeps.exe">Any platform (new install) - syndie-0.920a.bin.nodeps.exe</a>
(<a href="dist/syndie-0.920a.bin.nodeps.exe.sig">GPG signature</a>) - 2.1MB<br />
does not include <a href="http://eclipse.org/swt/">SWT</a> or
<a href="http://www.hsqldb.org/">HSQLDB</a>, so only use this if
you can arrange to have <code>swt.jar</code> and
<code>hsqldb.jar</code> in your Syndie <code>lib/</code> directory.</li>
<li><a href="dist/syndie-0.920a.bin.jar-only.zip">Any platform (upgrade) - syndie-0.920a.bin.jar-only.zip</a>
(<a href="dist/syndie-0.920a.bin.jar-only.zip.sig">GPG signature</a>) - 1.5MB<br />
Extracts ./lib/syndie.jar to replace an earlier syndie.jar. This should be <b>used for upgrades</b>.</li>
<li><a href="dist/syndie-0.920a.bin.zip">Text only - syndie-0.920a.bin.zip</a>
(<a href="dist/syndie-0.920a.bin.zip.sig">GPG signature</a>) - 2.2MB<br />
This unzips into <code>./syndie-0.920a</code> and does not create any
desktop or start menu shortcuts, but can be used on computers without a
graphical interface.<br />
To run Syndie without a GUI, launch it as above, but with the parameter
<code>--cli</code>.</li>
<li>Prerequisites:
<a href="http://java.sun.com/javase/downloads/index.jsp">jre1.4+</a>,
<a href="http://gcc.gnu.org/java/">GCJ/GIJ 4.0+</a>, or
<a href="http://www.kaffe.org/">Kaffe 1.1.7+</a>
(other JVMs may suffice)</li>
</ul>
<h4>Source:</h4>
<ul>
<li><a href="dist/syndie-0.920a.src.tar.bz2">syndie-0.920a.src.tar.bz2</a>
(<a href="dist/syndie-0.920a.src.tar.bz2.sig">GPG signature</a>) - 1.2MB</li>
<li><a href="dist/syndie-0.920a.src.nodeps.tar.bz2">syndie-0.920a.src.nodeps.tar.bz2</a>
(<a href="dist/syndie-0.920a.src.nodeps.tar.bz2.sig">GPG signature</a>) - 0.5MB</li>
<li>Download and extract the archive, then read the INSTALL file</li>
<li>Prerequisites:
<a href="http://ant.apache.org/">ant 1.6.5</a>,
<a href="http://java.sun.com/javase/downloads/index.jsp">jdk1.4+</a>/
<a href="http://gcc.gnu.org/java/">GCJ/GIJ 4.0+</a>/ or
<a href="http://www.kaffe.org/">Kaffe 1.1.7+</a>
(other JDKs may suffice),
<a href="http://www.eclipse.org/swt/">SWT 3.2+</a> (3.3M4 or newer includes
useful features),
<a href="http://www.hsqldb.org/">HSQLDB 1.8.0.7+</a> (older releases may
work)</li>
</ul>
<p>Older releases are <a href="dist/">archived</a></p>
<!--
Gentoo:<ul>
<li><code>emerge syndie</code></li>
Debian:<ul>
<li><code>apt-get syndie</code></li>
-->
<p>The GPG public key used to sign the distributed files is <code>393F2DF9</code> (fingerprint <code>AE89 D080 0E85 72F0 B777 B2ED C2FA 68C0 393F 2DF9</code>)</p>
<h4>Unreleased development source:</h4>
<ul>
<li>A public <a href="http://venge.net/monotone/">monotone</a> repository of the
syndie code is available on the netsync server <code>mtn.i2p.net</code>
in the <code>syndie</code> branch.<br />
<i>Not familiar with monotone? See this <a href="monotone_howto.html">howto</a></i></li>
<li>Developers are granted write permission to that repository, and everyone
is granted read permission.</li>
<li>The list of authorized committers can be found in the mtn-committers
file, which includes their monotone public keys, ready to be imported
with <code>cat mtn-committers | monotone read</code>. That file can be
verified against the above GPG public key with
<code>gpg --verify mtn-committers.sig</code>.</li>
</ul>
<p><b>To upgrade or reinstall</b>, simply install Syndie again on top of itself.
Upgrading or reinstalling does not affect your content or keys, just the
software. To completely wipe any old data, identities, or keys, delete the
<code>$HOME/.syndie</code> directory.</p>
<p><b>To uninstall</b>, if you used the installer and created desktop icons or
start menu shortcuts, simply launch the included uninstaller. Otherwise, just
remove the directory you installed Syndie into (e.g. <code>$HOME/syndie</code> or
<code>C:\Documents and Settings\User\syndie</code>).</p>
<p>The Syndie content is stored in <code>$HOME/.syndie</code> or
<code>%HOME%\.syndie</code> by default, so you should delete that directory as
well if you want to remove the content (and private keys!). To use another
location (or to run multiple instances at once), simply pass another root
directory on the command line (e.g. <code>syndie.exe C:\nym1</code>)</p>
</div>
</body>
</html>

View File

@ -323,7 +323,13 @@ public class SyndieURI {
public String getType() { return _type; }
public Map getAttributes() { return _attributes; }
public String getString(String key) { return (String)_attributes.get(key); }
public String getString(String key) {
Object o = _attributes.get(key);
if (o == null)
return null;
else
return o.toString();
}
public Long getLong(String key) { return (Long)_attributes.get(key); }
public String[] getStringArray(String key) { return (String[])_attributes.get(key); }
public boolean getBoolean(String key, boolean defaultVal) {

View File

@ -92,8 +92,6 @@ class SyndicateMenu implements TextEngine.Menu {
processListBan(client, ui, opts);
} else if ("unban".equalsIgnoreCase(cmd)) {
processUnban(client, ui, opts);
} else if ("buildsharedindex".equalsIgnoreCase(cmd)) {
processBuildSharedIndex(client, ui, opts);
} else {
return false;
}
@ -628,29 +626,4 @@ class SyndicateMenu implements TextEngine.Menu {
SyndicationManager.buildIndex(client, ui); //, maxSize);
ui.commandComplete(0, null);
}
private void processBuildSharedIndex(DBClient client, UI ui, Opts opts) {
SharedArchiveBuilder builder = new SharedArchiveBuilder(client, ui);
SharedArchive archive = builder.buildSharedArchive();
String orig = archive.toString();
ui.statusMessage("shared archive built: \n" + orig);
/*
try {
File tmp = File.createTempFile("shared", "dat", client.getTempDir());
FileOutputStream fos = new FileOutputStream(tmp);
archive.write(fos);
fos.close();
FileInputStream fis = new FileInputStream(tmp);
SharedArchive loaded = new SharedArchive();
loaded.read(fis);
String reload = loaded.toString();
if (reload.equals(orig))
ui.statusMessage("Persistance is roundtrip");
else
ui.errorMessage("Persistance fails. reloaded:\n" + reload);
} catch (Exception e) {
ui.errorMessage("error persisting", e);
}
*/
ui.commandComplete(0, null);
}
}

View File

@ -1088,7 +1088,14 @@ public class ThreadAccumulatorJWZ extends ThreadAccumulator {
TreeSet sorted = new TreeSet(_sortOrderAscending ? ASCENDING_COMPARATOR : DESCENDING_COMPARATOR);
HashMap keyToNode = new HashMap();
for (int i = 0; i < peers.length; i++) {
long when = peers[i].getLatestMessageId();
long when = -1;
if (_earliestReceiveDate > 0) {
// we are filtering by import date, not post date
when = peers[i].getLatestImportDate();
} else {
// filtering by post date, not import date
when = peers[i].getLatestMessageId();
}
while (keyToNode.containsKey(new Long(when)))
when++;
keyToNode.put(new Long(when), peers[i]);
@ -1390,6 +1397,7 @@ public class ThreadAccumulatorJWZ extends ThreadAccumulator {
private long _targetChannelId;
private boolean _dummy;
private ThreadMsgId _msg;
private long _importDate;
public ThreadReferenceNode(ThreadMsgId id) {
super(null, null, null, null);
_msg = id;
@ -1397,6 +1405,7 @@ public class ThreadAccumulatorJWZ extends ThreadAccumulator {
_subject = null;
_targetChannelId = -1;
_dummy = false;
_importDate = -1;
}
public ThreadMsgId getMsgId() { return _msg; }
public void setAuthorId(long authorId) { _authorId = authorId; }
@ -1434,6 +1443,14 @@ public class ThreadAccumulatorJWZ extends ThreadAccumulator {
latestMessageId = Math.max(latestMessageId, ((ThreadReferenceNode)getChild(i)).getLatestMessageId());
return latestMessageId;
}
public long getLatestImportDate() {
long latest = _importDate;
if (!isDummy() && (_msg != null) && (_msg.msgId >= 0) && (latest < 0))
latest = _importDate = _client.getMessageImportDate(_msg.msgId);
for (int i = 0; i < getChildCount(); i++)
latest = Math.max(latest, ((ThreadReferenceNode)getChild(i)).getLatestImportDate());
return latest;
}
public long getLatestAuthorId() { return getLatestAuthorId(getLatestMessageId()); }
private long getLatestAuthorId(long latestMessageId) {
SyndieURI uri = getURI();

View File

@ -264,6 +264,7 @@ public class HighlightView implements Themeable, Translatable, SyndicationManage
if (items != null) for (int i = 0; i < items.length; i++) items[i].dispose();
SyndicationManager mgr = _browser.getSyndicationManager();
mgr.loadArchives();
int archives = mgr.getArchiveCount();
_browser.getUI().debugMessage("known archives: " + archives);
int scheduled = 0;

View File

@ -215,6 +215,7 @@ public class MessageTree implements Translatable, Themeable {
private MenuItem _advancedPrivacyAuthorized;
private MenuItem _advancedPrivacyPBE;
private MenuItem _advancedPrivacyPrivate;
private MenuItem _advancedDateImport;
private MenuItem _advancedThreadResults;
private MenuItem _advancedPassphraseRequired;
private ReferenceChooserPopup _forumChooser;
@ -308,6 +309,8 @@ public class MessageTree implements Translatable, Themeable {
new MenuItem(_advancedMenu, SWT.SEPARATOR);
_advancedThreadResults = new MenuItem(_advancedMenu, SWT.CHECK);
new MenuItem(_advancedMenu, SWT.SEPARATOR);
_advancedDateImport = new MenuItem(_advancedMenu, SWT.CHECK);
new MenuItem(_advancedMenu, SWT.SEPARATOR);
_advancedPassphraseRequired = new MenuItem(_advancedMenu, SWT.CHECK);
_advancedScopeAll.setSelection(true);
@ -316,6 +319,7 @@ public class MessageTree implements Translatable, Themeable {
_advancedPrivacyPBE.setSelection(true);
_advancedPrivacyPrivate.setSelection(true);
_advancedThreadResults.setSelection(true);
_advancedDateImport.setSelection(true);
SelectionListener lsnr = new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent selectionEvent) { _msgTree.applyFilter(); }
@ -329,6 +333,7 @@ public class MessageTree implements Translatable, Themeable {
_advancedPrivacyPBE.addSelectionListener(lsnr);
_advancedPrivacyPrivate.addSelectionListener(lsnr);
_advancedThreadResults.addSelectionListener(lsnr);
_advancedDateImport.addSelectionListener(lsnr);
_advancedPassphraseRequired.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent evt) {
@ -532,8 +537,13 @@ public class MessageTree implements Translatable, Themeable {
days = 1;
break;
}
attributes.put("age", new Integer(days));
attributes.put("agelocal", new Integer(days));
if (_advancedDateImport.getSelection()) {
attributes.put("agelocal", new Integer(days));
attributes.remove("age");
} else {
attributes.put("age", new Integer(days));
attributes.remove("agelocal");
}
String tag = _filterTag.getText().trim();
if ( (_filterTag.getSelectionIndex() == 0) ||
@ -677,6 +687,7 @@ public class MessageTree implements Translatable, Themeable {
_advancedPrivacyAuthorized.setText(registry.getText(T_ADVANCED_PRIVACY_AUTHORIZED, "Readable by: authorized readers"));
_advancedPrivacyPBE.setText(registry.getText(T_ADVANCED_PRIVACY_PBE, "Readable by: those with a passphrase"));
_advancedPrivacyPrivate.setText(registry.getText(T_ADVANCED_PRIVACY_PRIVATE, "Readable by: forum administrators"));
_advancedDateImport.setText(registry.getText(T_ADVANCED_DATEIMPORT, "Use local import date instead of (unreliable) message creation date"));
_advancedThreadResults.setText(registry.getText(T_ADVANCED_THREAD, "Organize results in threads"));
_advancedPassphraseRequired.setText(registry.getText(T_ADVANCED_PASSPHRASE_REQUIRED, "Messages requiring a new passphrase"));
@ -986,15 +997,9 @@ public class MessageTree implements Translatable, Themeable {
acc.setSort(sort, _currentSortDirection == SWT.UP);
_browser.getUI().debugMessage("gathering the threads");
acc.gatherThreads();
// now sort it...
_browser.getUI().debugMessage("sorting the threads");
List threads = new ArrayList();
for (int i = 0; i < acc.getThreadCount(); i++)
threads.add(acc.getRootThread(i));
// now sort...
// (or not...)
return threads;
}
@ -1155,9 +1160,16 @@ public class MessageTree implements Translatable, Themeable {
//_tags.add(tag);
}
tags = buf.toString().trim();
date = Constants.getDate(uri.getMessageId().longValue());
item.setGrayed(false);
long importDate = _client.getMessageImportDate(msgId);
long postDate = uri.getMessageId().longValue();
if ( (_appliedFilter == null) || (_appliedFilter.getString("agelocal") != null) ) {
date = Constants.getDate(importDate);
_browser.getUI().debugMessage("using local import date for " + msgId + ": " + date + " (instead of " + Constants.getDate(postDate) + ")");
} else {
date = Constants.getDate(postDate);
_browser.getUI().debugMessage("using post date for " + msgId + ": " + date + " (instead of " + Constants.getDate(importDate) + ")");
}
status = _client.getMessageStatus(_client.getLoggedInNymId(), msgId, targetChanId);
} else {
// message is not locally known
@ -1210,8 +1222,8 @@ public class MessageTree implements Translatable, Themeable {
}
private void resizeCols() {
int total = _tree.getClientArea().width - _colType.getWidth();
int dateWidth = ImageUtil.getWidth("0000/00/00 ", _tree) + _tree.getGridLineWidth()*2;
int dateWidth = ImageUtil.getWidth("0000/00/00XXXXXXXX", _tree) + _tree.getGridLineWidth()*2;
int total = _tree.getClientArea().width - _colType.getWidth() - dateWidth;
int subjWidth = total / 3;
int chanWidth = total / 5;
@ -1376,6 +1388,7 @@ public class MessageTree implements Translatable, Themeable {
private static final String T_ADVANCED_PRIVACY_AUTHORIZED = "syndie.gui.messagetree.filteradvanced.priv.auth";
private static final String T_ADVANCED_PRIVACY_PBE = "syndie.gui.messagetree.filteradvanced.priv.pbe";
private static final String T_ADVANCED_PRIVACY_PRIVATE = "syndie.gui.messagetree.filteradvanced.priv.private";
private static final String T_ADVANCED_DATEIMPORT = "syndie.gui.messagetree.filteradvanced.dateimport";
private static final String T_ADVANCED_THREAD = "syndie.gui.messagetree.filteradvanced.thread";
private static final String T_ADVANCED_PASSPHRASE_REQUIRED = "syndie.gui.messagetree.filteradvanced.passrequired";

View File

@ -236,7 +236,8 @@ public class MessageView implements Translatable, Themeable {
_headerAuthorAction.setVisible(showAuthor);
String date = Constants.getDate(msg.getMessageId());
_headerDate.setText(date);
String impDate = Constants.getDate(_client.getMessageImportDate(msg.getInternalId()));
_headerDate.setText(date + " [" + impDate + "]");
Set tags = new TreeSet(msg.getPublicTags());
tags.addAll(msg.getPrivateTags());