Skip to content

Commit

Permalink
Added KeyAdjuster for modyfing keybinds.
Browse files Browse the repository at this point in the history
  • Loading branch information
Fexcraft committed Sep 22, 2020
1 parent 3938ca2 commit d26a52f
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 1 deletion.
6 changes: 6 additions & 0 deletions resources/lang/default.lang
Original file line number Diff line number Diff line change
Expand Up @@ -249,8 +249,14 @@ settingsbox.confirm=Confirm
settingsbox.darktheme.mayneedrestart=This may require a restart to take full effect.
settingsbox.settings_needs_restart=This setting needs a restart to take full effect.

# KeyAdjuster
keyadjuster.title=FMT Keybind Adjuster
keyadjuster.occupied=Key is already in use!
keyadjuster.reset=Reset

# DialogBox
dialogbox.title.default=Generic Dialog
dialogbox.button.continue=Continue
dialogbox.button.confirm=Confirm
dialogbox.button.cancel=Cancel
dialogbox.button.select=Select
Expand Down
82 changes: 82 additions & 0 deletions src/net/fexcraft/app/fmt/ui/KeyAdjuster.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package net.fexcraft.app.fmt.ui;

import static org.liquidengine.legui.event.MouseClickEvent.MouseClickAction.CLICK;

import org.liquidengine.legui.component.Button;
import org.liquidengine.legui.component.Dialog;
import org.liquidengine.legui.component.Label;
import org.liquidengine.legui.component.ScrollablePanel;
import org.liquidengine.legui.component.SelectBox;
import org.liquidengine.legui.event.MouseClickEvent;
import org.liquidengine.legui.event.ScrollEvent;
import org.liquidengine.legui.input.KeyCode;
import org.liquidengine.legui.input.Keyboard;
import org.liquidengine.legui.listener.MouseClickEventListener;

import net.fexcraft.app.fmt.FMTB;
import net.fexcraft.app.fmt.ui.editor.EditorBase.SPVSL;
import net.fexcraft.app.fmt.utils.KeyCompound;
import net.fexcraft.app.fmt.utils.KeyCompound.KeyFunction;
import net.fexcraft.app.fmt.utils.Translator;

/**
*
* @author Ferdinand Calo' (FEX___96)
*
*/
public class KeyAdjuster {

public static final void open(){
Dialog dialog = new Dialog(Translator.translate("keyadjuster.title"), 520, 350);
dialog.setResizable(false);
ScrollablePanel panel = new ScrollablePanel(10, 10, 500, 280);
int size = 10 + (KeyCompound.keys.size() * 30);
int index = 0;
panel.getContainer().setSize(500, size < 280 ? 280 : size);
for(KeyFunction func : KeyCompound.keys){
panel.getContainer().add(new Label(func.name(), 10, 10 + (index * 30), 180, 20));
SelectBox<String> box = new SelectBox<>(190, 10 + (index * 30), 230, 20);
for(KeyCode code : KeyCode.values()){
box.addElement(code.name());
}
box.addSelectBoxChangeSelectionEventListener(listener -> {
int id = Keyboard.getNativeCode(KeyCode.valueOf(listener.getNewValue()));
if(occupied(id)){
DialogBox.showOK("keyadjuster.title", null, null, "keyadjuster.occupied");
box.setSelected(Keyboard.getKeyCode(func.id()).name(), true);
}
else func.setId(id);
});
box.setSelected(Keyboard.getKeyCode(func.id()).name(), true);
box.setVisibleCount(12);
panel.getContainer().add(box);
Button button = new Button(Translator.translate("keyadjuster.reset"), 430, 10 + (index * 30), 50, 20);
button.getListenerMap().addListener(MouseClickEvent.class, (MouseClickEventListener)e -> {
if(CLICK == e.getAction()){
func.setId(null);
box.setSelected(Keyboard.getKeyCode(func.id()).toString(), true);
}
});
panel.getContainer().add(button);
index++;
}
panel.setHorizontalScrollBarVisible(false);
panel.getViewport().getListenerMap().removeAllListeners(ScrollEvent.class);
panel.getViewport().getListenerMap().addListener(ScrollEvent.class, new SPVSL());
Button button = new Button(Translator.translate("dialogbox.button.continue"), 10, 300, 100, 20);
button.getListenerMap().addListener(MouseClickEvent.class, (MouseClickEventListener)e -> {
if(CLICK == e.getAction()) dialog.close();
});
dialog.getContainer().add(panel);
dialog.getContainer().add(button);
dialog.show(FMTB.frame);
}

private static boolean occupied(int id){
for(KeyFunction func : KeyCompound.keys){
if(func.id() == id) return true;
}
return false;
}

}
2 changes: 1 addition & 1 deletion src/net/fexcraft/app/fmt/ui/UserInterfaceUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ public static void addToolbarButtons(Frame frame){
}),
new MenuButton("toolbar.utils.rescale", () -> FMTB.MODEL.rescale()),
new MenuButton("toolbar.utils.font_util", () -> FontUtils.open()),
new MenuButton("toolbar.utils.controls", NOT_REIMPLEMENTED_YET)
new MenuButton("toolbar.utils.controls", () -> KeyAdjuster.open())
));
frame.getContainer().add(new MenuEntry(2, Translator.translate("toolbar.editor"),
new MenuButton("toolbar.editor.hide_all", () -> Editors.hideAll()),
Expand Down

0 comments on commit d26a52f

Please sign in to comment.