Damien Jade Duff
2006-06-23 11:56:34 UTC
Hello all
I am planning to make some improvements to my basic jEdit RefDB
interface and since maybe one day this might be useful to someone else,
I think I'm justified in seeing if anyone wants to comment before I get
up to my armpits in the technical details of java GUI building. If
you're interested in jEdit GUIs for RefDB, read on.
At the moment all I have is a hacked-together jEdit dockable that allows
me to add references and notes in bibtex, ris, risx, update them in ris
or risx, delete them by id, get lists of them via a search field, etc.
as well as dumping an risx template to the editing buffer. It calls
refdbc directly and passes and retrieves info through the command-line,
STDOUT, STDIN, STDERR, etc.
However, I have a sizeable number of references (about 120) in the
system now and my interface is too clunky. It takes a few seconds to
pull back all the references from my local postgresql db, no matter the
format, so I'd like to have a way of browsing the references in an
easier, faster and more intelligent way. Also, linking references and
notes is a bugger because I've got to remember the keys of each one,
etc. Optimally I'd like to be able to jump to a reference and start
entering notes on it, linking it to other references and notes, etc
Essentially, I want to be browsing a visual structure of references and
notes, like a tree (as with the BufferList plugin or something similar).
Incidentally, in order to create links directly between xnotes at
present I would have to create dummy references for these to point to.
Is this sensible, or am I trying to push the system too far? (i.e. as
well as keeping a bibliography I want to use the system to keep notes
and it seems nearly adapted to this in structure). Whaddya reckon?
Anyway, I think I have two ways forward - a tightly-coupled approach
where I get small chunks of info back from refdbc only when I need it,
and a loosely-coupled approach where I download a whole bunch of barely
pre-filtered info from refdbc into jEdit memory space and make some
effort to keep it synchronised.
The former has the advantage that it doesn't stretch jEdit's memory and
is has a reasonably straightforward partial-synchronisation strategy.
But it means that I need to impose more structure on my reference
database so that I can browse it in a local fashion. refdbc does provide
a facility for extracting the author list, keyword list, journal list,
etc though unfortunately there is no facility for an anadorned list of
citation keys or note keys (I could probably figure how to do this even
though c gives me a headache, but perhaps it could be included in the
next release...? Also, presumably titles are not indexed fields). I
_think_ refdb should be fast enough if I choose my methods of data
extraction right.
The latter has the advantage that I can do quick searches through the
data locally without requiring too much structure in the database (e.g.
title, keyword, author searches). Essentially I can do what I want with
the data. But a lot of the data needs to be kept in jEdit memory space,
and if I want to produce something that is scaleable to industrial
operations it may not be perfect (should I care about this?), and it
somewhat defeats the purpose of keeping them in a database since I
could've just read it all in from a flat file.
Ultimately, the former is an alluring option because it absolutely
forces me to add some more structure to my DB, which I see happening by
exploiting the xnotes facility and exploiting the keyword facility in a
more disciplined way (e.g. rather than adding the keywords "genetic
programming", and "example source", I add the keywords "entered
for/example source", "subject/genetic programming"). But the latter is
going to be faster to use. Any ideas would be welcome.
However I do this part, the visible result will be a jEdit dockable that
contains a tree of references and notes. Filtering is possible, as well
as changing which tree model is displayed (e.g. by author last-name or
title or keyword, or, best, by citation key, if we can change refdbc to
dump an anadorned list of citation keys). Adding of links should be a
case of selecting multiple items and clicking "Link" (probably a
context-sensitive menu). Actual editing of entries is still done using
the jEdit XML tool validating against the risx dtd, or via plaintext RIS
or bibtex mode (though only for new entries). Note, also, I have no
current plans to integrate any of this with docbook or latex because I
don't use docbook and because the command-line latex tools are
sufficient at present (though of course facilities for copying citation
keys to the clipboard are easy enough to do).
Anyway, I've rambled on enough. If you want some input into this
project, or you just have some half-baked ideas, please post back to the
list. If someone has already made a start on something I'd like to hear
more about it. At my expected rate of progress, I don't anticipate
having anything worth sharing for some time (maybe 6 months).
Peace
Damien
I am planning to make some improvements to my basic jEdit RefDB
interface and since maybe one day this might be useful to someone else,
I think I'm justified in seeing if anyone wants to comment before I get
up to my armpits in the technical details of java GUI building. If
you're interested in jEdit GUIs for RefDB, read on.
At the moment all I have is a hacked-together jEdit dockable that allows
me to add references and notes in bibtex, ris, risx, update them in ris
or risx, delete them by id, get lists of them via a search field, etc.
as well as dumping an risx template to the editing buffer. It calls
refdbc directly and passes and retrieves info through the command-line,
STDOUT, STDIN, STDERR, etc.
However, I have a sizeable number of references (about 120) in the
system now and my interface is too clunky. It takes a few seconds to
pull back all the references from my local postgresql db, no matter the
format, so I'd like to have a way of browsing the references in an
easier, faster and more intelligent way. Also, linking references and
notes is a bugger because I've got to remember the keys of each one,
etc. Optimally I'd like to be able to jump to a reference and start
entering notes on it, linking it to other references and notes, etc
Essentially, I want to be browsing a visual structure of references and
notes, like a tree (as with the BufferList plugin or something similar).
Incidentally, in order to create links directly between xnotes at
present I would have to create dummy references for these to point to.
Is this sensible, or am I trying to push the system too far? (i.e. as
well as keeping a bibliography I want to use the system to keep notes
and it seems nearly adapted to this in structure). Whaddya reckon?
Anyway, I think I have two ways forward - a tightly-coupled approach
where I get small chunks of info back from refdbc only when I need it,
and a loosely-coupled approach where I download a whole bunch of barely
pre-filtered info from refdbc into jEdit memory space and make some
effort to keep it synchronised.
The former has the advantage that it doesn't stretch jEdit's memory and
is has a reasonably straightforward partial-synchronisation strategy.
But it means that I need to impose more structure on my reference
database so that I can browse it in a local fashion. refdbc does provide
a facility for extracting the author list, keyword list, journal list,
etc though unfortunately there is no facility for an anadorned list of
citation keys or note keys (I could probably figure how to do this even
though c gives me a headache, but perhaps it could be included in the
next release...? Also, presumably titles are not indexed fields). I
_think_ refdb should be fast enough if I choose my methods of data
extraction right.
The latter has the advantage that I can do quick searches through the
data locally without requiring too much structure in the database (e.g.
title, keyword, author searches). Essentially I can do what I want with
the data. But a lot of the data needs to be kept in jEdit memory space,
and if I want to produce something that is scaleable to industrial
operations it may not be perfect (should I care about this?), and it
somewhat defeats the purpose of keeping them in a database since I
could've just read it all in from a flat file.
Ultimately, the former is an alluring option because it absolutely
forces me to add some more structure to my DB, which I see happening by
exploiting the xnotes facility and exploiting the keyword facility in a
more disciplined way (e.g. rather than adding the keywords "genetic
programming", and "example source", I add the keywords "entered
for/example source", "subject/genetic programming"). But the latter is
going to be faster to use. Any ideas would be welcome.
However I do this part, the visible result will be a jEdit dockable that
contains a tree of references and notes. Filtering is possible, as well
as changing which tree model is displayed (e.g. by author last-name or
title or keyword, or, best, by citation key, if we can change refdbc to
dump an anadorned list of citation keys). Adding of links should be a
case of selecting multiple items and clicking "Link" (probably a
context-sensitive menu). Actual editing of entries is still done using
the jEdit XML tool validating against the risx dtd, or via plaintext RIS
or bibtex mode (though only for new entries). Note, also, I have no
current plans to integrate any of this with docbook or latex because I
don't use docbook and because the command-line latex tools are
sufficient at present (though of course facilities for copying citation
keys to the clipboard are easy enough to do).
Anyway, I've rambled on enough. If you want some input into this
project, or you just have some half-baked ideas, please post back to the
list. If someone has already made a start on something I'd like to hear
more about it. At my expected rate of progress, I don't anticipate
having anything worth sharing for some time (maybe 6 months).
Peace
Damien