Java: enforce a single instance of an app

The Console is an app which typical usecase fits within running a single instance. That's by design. However, we sometimes forget to check whether some the app is waiting for us in the background and try to launch them. That's when disaster happens. Two consoles placed on top of window and reacting to same hotkey? Cannot be!

Here's a short story about preventing from having multiple instances of same app made in Java. There's a note about communication, too.

→ Continue reading

JavaFX: Prevent TextField auto-selection on refocus

JavaFX punched me in the face with a feature which I consider as a kind of general over-assumption and as a bug in The Console. When TextField is refocused through other event than click then it auto selects it's whole content. I want my previous selection or caret position.

A workaround/hack/fix is introduced in this post. Oh, by the way, there's a bug report.

→ Continue reading

babun + gitk

When I use git VCS, I simply work in a shell. Even more complicated branching can be resolved using git show-branch  command. But this time I wanted to compare that again with gitk. Since I work on Windows I use babun which is based on Cygwin. And we know that Cygwin can actually launch gitk properly, right? Well, yes - when you configure it.

→ Continue reading

Modules in The Console – Take One

In previous posts (linked in the Summary) I discussed a topic of implementing modules in The Console. This time I'm going to describe my first step in this direction.

Currently The Console supports simple scripts - one .js file is one script, i.e.  scripts/info/currency.js  is just a  currency  command.

But that's not enough. I want the modules, too. Here's how I make them real.

→ Continue reading

Build Runnable JAR of Xtend + JavaFX project in Maven

After a long research I've found a site that helps with compiling Xtend using Maven - http://www.eclipse.org/xtend/download.html - pretty straightforward, isn't it? However, it lacks a few more things.

My goal was to compile and package Java 8 project together with JavaFX, written mostly in Xtend (in place of Java) with unpacked libraries into one Runnable JAR. In the end I'd like it to be compatible with e(fx)clipse IDE. Here's how.

→ Continue reading

The state of importing node.js modules into Java

As I noticed in previous article about script management I'd like to support script sharing in The Console. This topic automatically brings idea of supporting Node.js modules. Nashorn doesn't provide any kind of module import/export mechanism like CommonJS. However, it's doable to provide custom require() and module.exports. But is it possible to really import Node.js modules or anything from npm?

→ Continue reading

REPL or even better

Read-eval-print loop is quite useful kind of tool that simplifies both learning and trying some short code ideas. REPLs are always very specific - they can be used for evaluating programming language statements, some math calculation, database management, file processing and so on. In The Console I decided having all those things and even more - way to incorporate custom REPLs.

However, idea have grown much more than expected. In this post I explain what's the big deal to talk about which shows why the development have currently slowed down.

→ Continue reading

Power of lambda in Xtend

The Console supports multiple tabs. By hitting CTRL+T  combination new tab is opened and auto-named. I decided to name tabs as "Tab 1", "Tab 2", etc. However, those tabs can be renamed and moved inbetween so auto-naming need an algorithm. I've done similiar operation few times but never done this specific things by using Lambda Expressions in Xtend. I was quite surprised by one small detail.

→ Continue reading

The Console: script management

The biggest feature of my console software is ability to code own "commands" - scripts. It's supposed to be easy and quick for programmers. I'm not trying to design my own DSL language or make users install some weird packages into system. JavaScript and console API is all you need to know to code your custom scripts.

If one of goals of The Console project is to make easy custom scripting then it's logical that you need some way to manage your scripts. Putting all scripts in one file or even all scripts in one folder would be a mess. So, how to manage those files? How The Console deals with it?

→ Continue reading