Von der Kommandozeile zum GUI

screenshot table dialog

Als Softwareentwickler baut man sich häufig schnell kleine Hilfsprogramme. Manchmal sind diese kleinen Helferlein so praktisch, dass man sie auch gerne weniger versierten Nutzer geben möchte. Diese Leute an die Kommandozeile heranzuführen wird dann meist schnell ungemütlich. Aus diesem Grund habe ich eine kleine Bibliothek geschrieben, die uns gleichgesinnten helfen soll.

Für die Bash-Programmierung gibt es tolle Helfer wie Zenity. Diese erstellen mit wenigen Zielen Code einfache grafische Oberflächen für Nutzereingaben. Meistens entwickel ich jedoch mit Java und z.T. auch für Windows Nutzer. Für diese Zielgruppe ist Zenity jedoch nicht geeignet, da zunächst einige Abhängigkeiten installiert werden müssten.

Not macht erfinderisch und daher habe ich einfach eine kleine Bibliothek in Java entwickelt, die auf ähnliche Weise einfache Dialoge erzeugt und auf den Namen UiBooster getauft. Damit kann ich nun schnell verschiedene Dialog erzeugen und somit meine Kommandozeilen-Tools auf ein neues Level heben – jedenfalls für die „klicki-bunti Nutzer“ 😉

Hier sind mal ein paar Beispiele von der Github-Seite.

Information dialogs

screenshot info dialog screenshot warn dialog screenshot error dialog

new UiBooster().showInfoDialog("UiBooster is a lean library to ....");
new UiBooster().showWarningDialog("Your computer has a low battery ....", "WARN");
new UiBooster().showErrorDialog("The connection to SQL database is failed.", "ERROR");

Text input dialog

screenshot input dialog

String opinion = new UiBooster().showTextInputDialog("What do you think?");

Confirmation dialog

screenshot confirm dialog

new UiBooster().showConfirmDialog(
                "Do you really want this action?",
                "Are you sure?",
                () -> System.out.println("Action accepted"),
                () -> System.out.println("Action declined"));

Selection dialog

screenshot selection dialog

String selection = new UiBooster().showSelectionDialog(
        "What's your favorite movie?",
        "Favorite Movie?",
        Arrays.asList("Pulp Fiction", "Bambi", "The Godfather", "Hangover"));

Colorpicker

screenshot color dialog

Color selectedColor = new UiBooster().showColorPicker("Choose your favorite color", "Color picking");

File and directory selection dialogs

screenshot file dialog

UiBooster booster = new UiBooster();
File file = booster.showFileSelection();
File directory = booster.showDirectorySelection();
File fileOrDirectory = booster.showFileOrDirectorySelection();

Login dialog

screenshot login dialog

LoginCredentials credentials = new UiBooster().showLogin(
        "Login",
        "Internal area",
        "Username",
        "Password",
        "Go",
        "Cancel");

Waiting dialog

screenshot waiting dialog

WaitingDialog dialog = new UiBooster().showWaitingDialog("Starting", "Please wait");
dialog.setMessage("Ready");
dialog.close();

screenshot waiting with message dialog

WaitingDialog dialog = new UiBooster().showWaitingDialog("Starting", "Please wait");
dialog.setMessage("Initializing");
dialog.setLargeMessage("Some more information...\nMaybe from log files or other resources. \nBe transparent to the user to understand long processes...");
dialog.close();

Progress dialog

screenshot progress dialog

ProgressDialog dialog = new UiBooster().showProgressDialog("Please wait", "Waiting", 0, 120);
dialog.setProgress(10);
// ...
dialog.setProgress(120);
dialog.setMessage("Ready");
dialog.close();

Table dialog

screenshot table dialog

String[][] modifiedData = new UiBooster().showTable(    // showTableImmutable for immutable tables
        new String[][]{
                {"Jimmy Johnson", "35", "Zombieland"},
                {"Danny Durango", "23", "Hangover"},
                {"Larry Berry", "54", ""}
        },
        Arrays.asList("Name", "Age", "Favorite movie"),
        "Favorite movies");

Gallery dialog

screenshot gallery dialog

new UiBooster().showPictures(
        "My picture",
        Arrays.asList(
            new File("/home/nick/pictures/img-01.jpg"),
            new File("/home/nick/pictures/img-02.jpg")
        )
);

Falls dich das Projekt neugierig gemacht hat, dann probiert es doch in deinem nächsten Java-Projekt einfach mal aus. Alle Dialog basieren auf Swing und sind somit in jedem JRE und JDK standardmäßig enthalten.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s