programming.dev

9,510 readers
331 users here now

Welcome Programmers!

programming.dev is a collection of programming communities and other topics relevant to software engineers, hackers, roboticists, hardware and software enthusiasts, and more.

The site is primarily english with some communities in other languages. We are connected to many other sites using the activitypub protocol that you can view posts from in the "all" tab while the "local" tab shows posts on our site.


๐Ÿ”— Site with links to all relevant programming.dev sites

๐ŸŸฉ Not a fan of the default UI? We have alternate frontends we host that you can view the same content from

โ„น๏ธ We have a wiki site that communities can host documents on


โš–๏ธ All users are expected to follow our Code of Conduct and the other various documents on our legal site

โค๏ธ The site is run by a team of volunteers. If youre interested in donating to help fund things such as server costs you can do so here

๐Ÿ’ฌ We have a microblog site aimed towards programmers available at https://bytes.programming.dev

๐Ÿ› ๏ธ We have a forgejo instance for hosting git repositories relating to our site and the fediverse. If you have a project that relates and follows our Code of Conduct feel free to host it there and if you have ideas for things to improve our sites feel free to create issues in the relevant repositories. To go along with the instance we also have a site for sharing small code snippets that might be too small for their own repository.

๐ŸŒฒ We have a discord server and a matrix space for chatting with other members of the community. These are bridged to each other (so you can interact with people using matrix from discord and vice versa.

Fediseer


founded 2 years ago
ADMINS
1
 
 

Version 0.5.1 of my IRC Client has been released. This time around it was mostly focussed around bug fixes largely to do with updating the styles. But I also added a couple of features. This was a shorter release from 0.4.0 as the changes weren't as significant.

Profile Handling

I wanted a way to easily manage profiles, especially during development. With this release i've added a Profiles page, which allows you to Create new profiles, clone an existing profile, rename, and delete profiles. You can also set a profile as the default to be used when loading the app.

A majority of the effort went into keeping the Profile Picker (the combobox that changes the active profile) and the profiles page in sync which was done using listeners. New listeners were created for DELETE,CREATE, and CHANGE events as other components needed to add their own listeners to the queue to make sure they were also kept in sync, but also to update styles etc when the profile changes.


public static void fireListeners (EventType eventType)
{
    if(!listenerLists.containsKey(eventType))
        listenerLists.put(eventType, new EventListenerList());

    Object[] listeners = listenerLists.get(eventType).getListenerList();

    // Reverse order
    for (int i = listeners.length - 2; i >= 0; i -= 2)
    {
        if (listeners[i] == ActionListener.class)
        {
            if (actionEvent == null)
            {
                actionEvent = new ActionEvent(listeners, i, null);
            }

            ((ActionListener) listeners[i + 1]).actionPerformed(actionEvent);
        }
    }
}

All of this profile work was also used to centralise the loading and saving of profile information through the URProfileUtil helper class. This should hopefully help down the track.

Profiles Page

Custom Nick Format

This was similarly difficult to when I implemented the custom Date formatting. At least this time around I had an idea of how it might be implemented. However the difference was that I couldn't treat the resultant String as a whole, for example setting the Date format to [HHmm] i'd just return [0652] then insert that into the document, I had to contend with nick styles as well.

In the end I settled with splitting whatever was placed into the Nick format field into three parts (Prefix, nick, Suffix). If you want something just on the right side of the nick, you put nick in the Nick format field, then whatever you want next to that. When placing the nick in the document, I set the attributes according to which part and then use this when updating the styles etc.

Custom Nick format

2
12
submitted 1 year ago* (last edited 1 year ago) by Matty_r to c/java
 
 

Hello all,

I'm here with an update to my IRC Client, now at version 0.4.0 (urChat Github Link). I decided to revive this project a few months ago because there was a few things that I wanted to finish, as well as wanting to get back into Java. All my previous posts are on Reddit (My IRC Client.. 9 years later.).

This version was mostly concerned with customising the colours used for the various styles in the chat windows. The most difficult part was trying to find a balance with the defaults, but also making sure it wasn't a huge pain to try and get the colours and fonts just the way you want them.

My first hurdle, really, was not having a gigantic list of Styles and I wanted something a bit more intuitive. What I landed on was a little preview window where you can right-click on each of the Styles, and customise it from there:

  • Font Preview

Font Preview

The next feature, I wanted to be able to customise the displayed time format. This was particularly challenging because I needed a way to track the date/time of all previous sent messages, update the style which could be shorter or longer than the previous style, then put it all back inline without breaking the other formatting.

  • Custom timestamp format

Custom timestamp format

This is using the Java DateTimeFormatter to display the timestamp.

Another challenge was updating the styles smoothly. (There is a bug at the moment where it's not updating in all of the connected channels). This meant tracking what styles are used throughout your channels, then updating the style in-place. I wanted to make sure that you could customise, say, just the foreground without it also saving the background, because if you change the foreground to yellow on a dark theme it would save the dark background, then subsequently changing the theme would also keep dark background.

  • Changing the urlStyle to yellow

Changing the urlStyle to yellow

  • then changing to a light theme

changing to a dark theme

Obviously, yellow on a light background isn't great. So there is a reset button you can press which will set it back to the defaults.

If you'd like to try it out, there is a jar you can download from the GitHub releases page. Thanks for reading. I've still got a lot of work to do on it, i'm currently working towards the next release which will mostly focus around the usability side of things as well as the usual bug fixes.

view more: next โ€บ