Kotcrab.com

import com.kotcrab.Brain;

VisUI 0.8.1 Released

VisUI 0.8.1 for latest LibGDX 1.6.4 was released! Changes:

1
2
3
4
5
6
7
8
9
10
11
12
[0.8.1] [LibGDX 1.6.4]
-Updated libGDX to 1.6.4
-Error dialog from DialogUtils with exception will now show stacktrace from nested exceptions
-Skin change: ColorPickerStyle alphaBar25pxShifted removed (no longer necessary)
-Fixed VisSelectBox list elements padding
-Added skin in higher resolution (can be loaded by new method: VisUI.load(SkinScale.X2))
 -SVG file is also available thanks to piotr-j (https://github.com/piotr-j)
-Removed VisUI.getDefaultSpacingTop/Bottom/Right/Left and VisUI.setDefaultSpacingTop/Bottom/Right/Left
 -Replaced by Sizes class ( VisUI.getSizes() )
 -TableUtils.setSpacingDefault now properly uses all spacings if set
-OptionDialog (DialogUtils.showOptionDialog(...)) message label is now by default center aligned.
-Fixed bug in ColorPicker: pasting hex value was changing picker old color

VisUI skin is now available in higher resolution, it will make VisUI usable even on small screens. Because of that change I removed all getDefaultSpacing methods from VisUI class, now all sizes and paddings are stored inside skin file. It allows to easily load different values for different skin resolutions.

Enjoy!

VisEditor 0.2.0 Released

Finally after few months of work I can show you VisEditor - open source game level editor. Go check it out: http://vis.kotcrab.com/

This is just the first early version and there are still many more features I want to add!

VisUI 0.8.0 Released

VisUI 0.8.0 was released! This release will work with libGDX 1.6.3. Changes:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[0.8.0] [LibGDX 1.6.3]
-API Addition: Tooltip (Actor target, String text, int textAlign)
-API Addition: Tooltip (String styleName, Actor target, String text, int textAlign)
-API Addition: FormInputValidator#hideErrorOnEmptyInput (can be used with FromValidator to don't display error
               message if field is empty, field will be still marked with red border and accept button will be disabled)
-API Addition: FormValidator#directory(...)
-API Addition: FormValidator#directoryEmpty(...)
-API Addition: FormValidator#directoryNotEmpty(...)
-Optimized FileChooser ( https://github.com/kotcrab/VisEditor/issues/11 )
-Fixed issue when FileChooser confirm button text wasn't updated after changing mode ( https://github.com/kotcrab/VisEditor/pull/14 )
-Fixed issue when FileChooser would crash on file delete dialog
-Added 'blue' button style
-Added New Directory item in FileChooser popup menu ("contextMenuNewDirectory" was added to FileChooser I18N file)
-FileChooser I18N file: added contextMenuNewDirectory, newDirectoryDialogIllegalCharacters, newDirectoryDialogAlreadyExists properties
-Improved small font (some uppercase letters were missing 1px at the top)

Some FormValidator improvements, FileChooser got optimized A LOT especially on Windows where it could hang application for more than 10 seconds on startup. Now you can create new directories from FileChooser dialog.

Recently new libGDX 1.6.4 was released, I will update VisUI for it soon, stay tunned.

VisUI 0.7.7 Released

VisUI 0.7.7 was released! This release fixes all known bugs, it also has some nice improvements. VisUI 0.7.7 is for LibGDX 1.6.1, it will probably work with 1.6.0 but I don’t recommend doing it. Changelog first, as usual:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[0.7.7] [LibGDX 1.6.1]
-uiskin.json is now generated from USL (see USL page on GitHub Wiki, if you are not writing custom VisUI skins this does not affect you)
-API Addition: various getters and setters in NumberSelector
-API Addition: TabbedPane#getActiveTab
-API Change: Menu#selectButton(TextButton) and deselectButton(TextButton) no longer public, they wasn't part of public API
-Added 'navigate to parent directory' button in FileChooser
-FileChooser now displays "Computer" instead of "/" in partitions list (also added 'computer' entry in FileChooser I18N file)
-FileChooser: improved history (back and forward button)
-FileChooser now can will automatically updates drives list after connecting/removing drive, usb stick etc.
-FileChooser now will refresh files list after some files were changed in current directory
-FileChooser I18N: added property: popupSelectedFileDoesNotExist. Removed: popupOk, popupYes, popupNo (replaced by DialogUtils)
-Added some constructors that allows to use widgets without depending on VisUI.getSkin()
-Fixed infinite key repeat bug on Android in VisTextField ( https://github.com/kotcrab/VisEditor/issues/9 )
-Fixed small gap with empty title in NumberSelector
-Fixed issue where FileChooser file list wasn't rebuilt after setting new file filter
-Fixed issue where NumberSelector won't allow to enter value if min is greater than 0 ( related to https://github.com/kotcrab/VisEditor/issues/7 )
-Fixed closeOnEscape() with multiple windows (windows were closed in improper order) ( https://github.com/kotcrab/VisEditor/issues/10 )
-Fixed invalid title align in VisWindow after adding close button when title align is not set to center
-Fixed issue with disappearing MenuItem after opening PopupMenu while holding right mouse button and dragging down ( https://github.com/kotcrab/VisEditor/commit/a17e309b980b5d0db061a315685501e405811ff6 )
-FileChooser, ColorPicker, Tooltip, Menu and MenuBar now can use styles defined in skin file
-ColorPicker now supports I18N (added VisUI.setColorPickerBundle(I18NBundle))

The most important thing: VisUI now uses USL to generate uiskin.json file. USL is my language I created as an alternative for writing skin in json, it is very similar to json but it allows to extend and inherit existing styles, also extending VisUI skin is really easy now, see USL wiki page for more info.

As I said all known issues were fixed. FileChooser got some improvements, the biggest one is that it will automatically detect changes in directories and refresh file list if needed. It also works for connecting or removing new drives. See how it works

Enjoy!

VisUI 0.7.5 and 0.7.6 Released

VisUI 0.7.5 and 0.7.6 was released! Two releases today, once again we don’t have almost anything new expect VisImageTextButton. Somehow I forgot about that widget until I needed it :D

0.7.5 is the last version for LibGDX 1.5.6, 0.7.6 is for recently released LibGDX 1.6.0.

1
2
3
4
5
[0.7.6] [LibGDX 1.6.0]
-Updating to LibGDX 1.6.0

[0.7.5] [LibGDX 1.5.6]
-Added VisImageTextButton

VisUI 0.7.3 Released

NOTE: Please use 0.7.1 (for libGDX 1.5.5) or 0.7.4 (for libGdx 1.5.6), VisUI 0.7.3 and 0.7.2 can’t be used due to invalid POM file.

VisUI 0.7.3 was released! 0.7.3 doesn’t introduces almost anything new but it’s now fully compatible with latest LibGDX 1.5.6!

1
2
3
4
[0.7.3] [LibGDX 1.5.6]
-Updating to LibGDX 1.5.6
-Fixed input bug in VisTextField
-Tooltip now can be created without setting target

Enjoy!

VisUI 0.7.2 Released

NOTE: Please use 0.7.1 (for libGDX 1.5.5) or 0.7.4 (for libGdx 1.5.6), VisUI 0.7.3 and 0.7.2 can’t be used due to invalid POM file.

VisUI 0.7.2 was released! This is the last version for libGDX 1.5.5, next versions will use upcoming libGDX 1.5.6. Changes:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[0.7.2] [LibGDX 1.5.5]
-API Addition: NumberSelector (String name, int initialValue, int min, int max)
-API Addition: VisUI.load(Skin)
-API Addition: GridGroup
-API Addition: LinkLabel
-API Addition: VisValidableTextField#setRestoreLastValid(boolean)
-API Addition: VisTextButton (String, ChangeListener)
-API Addition: VisTextButton (String, String, ChangeListener)
-API Addition CollapsibleWidget.setCollapsed (boolean collapse, boolean applyAnimation) to change collapse state without animation
-Fixed menu not closing after clicking it on MenuBar
-Fixed submenu visible for disabled MenuItem
-Fixing some Tooltip problems, Tooltip now won't fade away when user has it mosue over it
-Better padding on VisList/List item (default list style selection drawable now uses 'padded-list-selection.9')
-New default favoritesPrefsName is com.kotcrab.vis.ui.widget.file.filechooser_favorites (was pl.kotcrab.vis.ui.widget.file.filechooser_favorites)
-Now waring will be printed to console if using default favorites preference name (see FileChooser.setFavoritesPrefsName(String))
-Improving text field (faster input while holding key)

VisUI 0.7.1 Released

Finally, over a month after 0.6.0 release, VisUI 0.7.1 was released! (I ate 0.7.0) This version adds many different things. As usual, let’s start with changelog:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[0.7.1] [LibGDX 1.5.5]
-Fixing GWT compatibility

[0.7.0] [LibGDX 1.5.5]
* Renaming:
   Validators.integers renamed to Validators.INTEGERS
   Validators.floats renamed to Validators.FLOAT
   PopupMenu#displayMenu renamed to PopupMenu#dshowMenu
   Skin Change: Separator 'height' renamed to 'thickness'
* Moving classes / reorganizing:
   VisTable moved to com.kotcrab.vis.ui.widget package
   DialogUtils moved to com.kotcrab.vis.ui.util.dialog package
   OptionDialogListener and OptionDialogAdapter moved to com.kotcrab.vis.ui.util.dialog package
   InputDialogListener and InputDialogAdapter moved to com.kotcrab.vis.ui.util.dialog package
   FormValidator, SimpleFormValidator, FormInputValidator moved to com.kotcrab.vis.ui.util.form package
   BasicFormValidator renamed to SimpleFormValidator
   TableUtils.setSpaceDefaults renamed to TableUtils.setSpacingDefaults
* Menu system changes:
   Submenus are now supported
   Removed PopupMenu constructors taking boolean, now auto remove is always enabled. Now when user has clicked MenuItem then PopupMenu will be removed from stage
   MenuBar constructor doesn't take Stage argument anymore
   Added: MenuItem#setSubMenu(PopupMenu subMenu)
   Added: MenuBar#addMenu(Menu menu) MenuBar#removeMenu(Menu menu) MenuBar#insertMenu(int index, Menu menu)
   Added: MenuBar#closeMenu()
   Skin Change: MenuItem widget now uses MenuItemStyle (used TextButtonStyle). MenuItemStyle extends TextButtonStyle. MenuItemStyle adds submenu icon.
* Skin changes:
   Separator style now has 'vertical' property
   Added VisSplitPane handleOver property
* Other API changes:
   API Change: Constructor Separator(boolean useMenuStyle) is now Separator(boolean vertical). Use 'new Separator("menu")' for menu styled separator
   API Change: FileChooserLocale removed, now using LibGDX's I18NBundle, see FileChooserText class
   API Change: VisWindow#getButtonTable deprecated, instead use VisWindow#getTitleTable
   API Change: VisDialog#getButtonTable deprecated, instead use VisDialog#getButtonsTable
   API Change: Removed FileChooser.getFavoritesPrefsName()
* Other API additions:
   Added New FormValidators: integerNumber, floatNumber, valueLesserThan, valueGreaterThan
   Added VisTable#addSeparator (boolean vertical)
   Added constructor VisLabel (CharSequence text, LabelStyle style)
   Added constructor VisLabel (CharSequence text, int alignment)
   Added TableBuilder and its implementations: StandardTableBuilder, CenteredTableBuilder, GridTableBuilder, OneColumnTableBuilder, OneRowTableBuilder
* Other changes:
   VisTree/Tree now have default mouse over drawable
   Added shift selection for FileChooser (key can be changed by FielChooser#setGroupMultiselectKey(...))
   Tooltip is now kept within Stage border
   Focus border is now optional for every widget that was using it
   Font support for Polish, German, Spanish, French, Greek and Russian characters
   FormInputValidator now uses validate(String) instead of validateInput(String) for input validation, calling setResult is no longer required
    (for examples on how to use it see SimpleFormValidator)
   Added ValidatorWrapper that allows standard validator to be used with (Simple)FormValidator#custom(...)
   Added DialogUtils.showConfirmDialog(...)
   Added TabbedPane

Okay, so this version also breaks a lot. If you want to update from old version better make a backup. Most breaking things comes from moving classes to different packages and from renaming things.

TabbedPane

VisUI 0.6.1 Released

VisUI 0.6.0 released! This updates adds one new big widget, other small changes and bugfixes. Go here if you still don’t know what VisUI is.

UPDATE: Please use 0.6.1, this release fixes file chooser favorites bug.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[0.6.1] [LibGDX 1.5.4]
-Fixed FileChooser disappearing when removing favourite

[0.6.0] [LibGDX 1.5.4]
-API Change: VisUI.skin is not private, use VisUI.getSkin() instead
-API Addition: DialogUtils.showOptionDialog (Stage stage, String title, String text, OptionDialogType type, OptionDialogListener listener)
-API Addition: FormValidator.fileExists (VisValidableTextField field, VisTextField relativeTo, String errorMsg, boolean errorIfRelativeEmpty)
-API Addition: ColorPicker
-API Addition: ColorUtils
-API Addition: VisImage
-API Addition: constructor VisLabel (CharSequence text, Color textColor)
-Changed close button style name to 'close-window' (was 'close')
-Added 'close' button style that matches other normal buttons
-Fixed focus traversing when TAB pressed in VisTextField, doesn't change focus to invisible fields and doesn't leaves modal windows
-Added built-in validators: IntegerValidator, FloatValidator, GreaterThanValidator, LesserThanValidator (see Validators class)
-Added VERSION string constant in VisUI

ColorPicker

Let’s start with the big one, a color picker!

VisEditor - Devlog #2

Hi again!

I’ve got some updates for you about VisEditor - my game level editor. You can read previous devlog here: Devlog #1

So let’s see what I’ve added:

Object Properties

It is basically a window that displays current selected objects properties. I’ve added two nice features to it. First is that in any field you can press Ctrl+Plus or Minus to increment or decrement value.

And second, if you select multiple objects then values that are same for every selected object will be shown normally, as number. Values that are various will be displayed as ‘?’. In any field you can enter new value and it will be set for every selected object.

This can be used for example to quickly align objects.

Z Index changing

Simple but important thing, changing Z index of added objects.