This is for the interfaces/trivial implementation classes that
DMDirc plugins can interact with. Eventually plugins will build
against the API instead of the DMDirc client itself, which will
allow for remote/detachable clients (amongst other things).
Don't fiddle with ports before passing them to the parser.
If the user doesn't specify a port, allow the parser implementation
to figure it out for itself. This allows for things like SRV lookups,
or different default ports per protocol.
It doesn't make sense to have a public method in Connection to
muddle around with how queries are tracked, nor for queries to
tell servers when they change (creating a dependency loop).
Instead, have the ServerEventHandler tell Server.
Stop swimming against the tide and accept what most of the rest of
the world does.
While it adds an annoying depth to the actual source code, it makes
the root directory nicer (no more 'test-res' dirs), means we don't
have to override the gradle config, and makes it nicer to work in
IDEA 2016.1.
Instead of wrapping the source event and modifying it, they are
now proper events that are displayed themselves (and the original
message is suppressed).
This allows highlights to be formatted differently.
Issue #669
Only rejoin channels that active when disconnected
If a channel is parted for any reason other than a disconnect
(e.g. a local /part, or a remote part/kick) then the channel
shouldn't be rejoined on reconnection.
Closes #667
These are all present in res/, so there's no need for them
to be in src/. I think we just forgot to delete them after
switching to proper resource dirs.
Guava provides a nice class which uses the public suffix list,
so we can ditch all of our hand-crafted logic and pathetically
small list of top level domains and do it properly.
Add a base class for events with a WindowModel source.
For #662, it makes sense to have a standard way to
get the source from events we may wish to filter.
This introduces a SourcedEvent interface, and adapts classes
to use it.
This allows windows to be uniquely identified and shared with
clients that are running outside of the DMDirc process (e.g.
a web UI, or a remote instance).