Skip to content

Commit

Permalink
Redesigned input controls/widgets.
Browse files Browse the repository at this point in the history
  • Loading branch information
nmihajlovski committed May 9, 2016
1 parent 65667a4 commit 33dc3be
Show file tree
Hide file tree
Showing 39 changed files with 856 additions and 219 deletions.
10 changes: 7 additions & 3 deletions assets/rapidoid/rapidoid-extras.js
Expand Up @@ -14,11 +14,15 @@ Rapidoid = (function() {
function _init() {
$(function () {

$('[data-toggle="tooltip"]').tooltip();
$('[data-toggle="tooltip"]').tooltip();

$('.pretty').each(function() {
$('.pretty').each(function() {
$(this).prettyCheckable({ color: 'blue' });
});
});

$(document).ready(function() {
$("select.select2").select2();
});

$('.copy-snippet').prepend('<button class="btn btn-default pull-right" data-copy-to-clipboard><i class="fa fa-copy"></i></button>');

Expand Down
20 changes: 17 additions & 3 deletions rapidoid-commons/src/main/resources/rapidoid-classes.txt
Expand Up @@ -182,15 +182,16 @@ org.rapidoid.goodies.RoutesHandler
org.rapidoid.goodies.TerminateHandler
org.rapidoid.goodies.X
org.rapidoid.gui.base.AbstractCommand
org.rapidoid.gui.base.AbstractInput
org.rapidoid.gui.base.AbstractOption
org.rapidoid.gui.base.AbstractOptions
org.rapidoid.gui.base.AbstractTextInput
org.rapidoid.gui.base.AbstractWidget
org.rapidoid.gui.Btn
org.rapidoid.gui.BtnMenu
org.rapidoid.gui.Card
org.rapidoid.gui.Debug
org.rapidoid.gui.FA
org.rapidoid.gui.Field
org.rapidoid.gui.Form
org.rapidoid.gui.FormMode
org.rapidoid.gui.Grid
org.rapidoid.gui.GUI
org.rapidoid.gui.GuiJpaUtil
Expand All @@ -200,6 +201,19 @@ org.rapidoid.gui.HtmlPage
org.rapidoid.gui.HtmlPageUtils
org.rapidoid.gui.I18N
org.rapidoid.gui.InfiniteStream
org.rapidoid.gui.input.Checkbox
org.rapidoid.gui.input.Checkboxes
org.rapidoid.gui.input.Dropdown
org.rapidoid.gui.input.EmailInput
org.rapidoid.gui.input.Field
org.rapidoid.gui.input.Form
org.rapidoid.gui.input.FormMode
org.rapidoid.gui.input.MultiSelect
org.rapidoid.gui.input.PasswordInput
org.rapidoid.gui.input.Radio
org.rapidoid.gui.input.Radios
org.rapidoid.gui.input.TextArea
org.rapidoid.gui.input.TextInput
org.rapidoid.gui.KVGrid
org.rapidoid.gui.Layout
org.rapidoid.gui.menu.AbstractPageMenuItem
Expand Down
168 changes: 25 additions & 143 deletions rapidoid-gui/src/main/java/org/rapidoid/gui/GUI.java
Expand Up @@ -29,6 +29,7 @@
import org.rapidoid.commons.Str;
import org.rapidoid.commons.TimeSeries;
import org.rapidoid.gui.base.AbstractWidget;
import org.rapidoid.gui.input.*;
import org.rapidoid.gui.reqinfo.IReqInfo;
import org.rapidoid.gui.reqinfo.ReqInfo;
import org.rapidoid.gui.var.LocalVar;
Expand All @@ -49,7 +50,10 @@
import org.rapidoid.var.Var;

import java.io.Serializable;
import java.util.*;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NavigableMap;
import java.util.concurrent.atomic.AtomicLong;

@Authors("Nikolche Mihajlovski")
Expand Down Expand Up @@ -510,166 +514,44 @@ public static Object highlight(String text, String regex) {
return Cls.customizable(Highlight.class, text, regex);
}

public static InputTag email(Var<?> var) {
return input().type("email").class_("form-control").value(str(var.get()));
public static EmailInput email() {
return Cls.customizable(EmailInput.class);
}

public static InputTag email(String var) {
return email(var, "");
public static PasswordInput password() {
return Cls.customizable(PasswordInput.class);
}

public static InputTag email(String var, String defaultValue) {
return email(var(var, defaultValue));
public static TextInput txt() {
return Cls.customizable(TextInput.class);
}

public static InputTag password(Var<?> var) {
return input().type("password").name(var.name()).class_("form-control").value(str(var.get()));
public static TextArea txtbig() {
return Cls.customizable(TextArea.class);
}

public static InputTag password(String var) {
return password(var, "");
public static Checkbox checkbox() {
return Cls.customizable(Checkbox.class);
}

public static InputTag password(String var, String defaultValue) {
return password(var(var, defaultValue));
public static Checkboxes checkboxes() {
return Cls.customizable(Checkboxes.class);
}

public static InputTag txt(Var<?> var) {
return input().type("text").name(var.name()).class_("form-control").value(str(var.get()));
public static Radio radio() {
return Cls.customizable(Radio.class);
}

public static InputTag txt(String var) {
return txt(var, "");
public static Radios radios() {
return Cls.customizable(Radios.class);
}

public static InputTag txt(String var, String defaultValue) {
return txt(var(var, defaultValue));
public static MultiSelect multiSelect() {
return Cls.customizable(MultiSelect.class);
}

public static TextareaTag txtbig(Var<?> var) {
return textarea().class_("form-control").contents(str(var.get()));
}

public static TextareaTag txtbig(String var) {
return txtbig(var, "");
}

public static TextareaTag txtbig(String var, String defaultValue) {
return txtbig(var(var, defaultValue));
}

public static InputTag checkbox(Var<?> var) {
String value = str(var.get());
return input().type("checkbox").name(var.name()).value(value).checked(has(var, value));
}

private static boolean has(Var<?> var, String value) {
return AnyObj.contains(var.get(), value);
}

public static InputTag checkbox(String var) {
return checkbox(var, false);
}

public static InputTag checkbox(String var, boolean defaultValue) {
return checkbox(var(var, defaultValue));
}

public static SelectTag dropdown(Collection<?> options, Var<?> var) {
U.notNull(options, "dropdown options");
SelectTag dropdown = select().class_("form-control").multiple(false);

for (Object opt : options) {
String value = str(var.get());
OptionTag op = option(opt).value(str(opt)).value(value);
dropdown = dropdown.append(op);
}

return dropdown;
}

public static SelectTag dropdown(Collection<?> options, String var) {
return dropdown(options, var, null);
}

public static SelectTag dropdown(Collection<?> options, String var, Object defaultValue) {
return dropdown(options, var(var, serializable(defaultValue)));
}

public static SelectTag multiSelect(Collection<?> options, Var<?> var) {
U.notNull(options, "multi-select options");
SelectTag select = select().name(var.name()).class_("form-control").multiple(true);

for (Object opt : options) {
String value = str(opt);
OptionTag op = option(opt).value(value).selected(has(var, value));
select = select.append(op);
}

return select;
}

public static SelectTag multiSelect(Collection<?> options, String var) {
return multiSelect(options, var, U.list());
}

public static SelectTag multiSelect(Collection<?> options, String var, Collection<?> defaultValue) {
return multiSelect(options, var(var, serializable(defaultValue)));
}

public static Tag[] radios(String name, Collection<?> options, Var<?> var) {
U.notNull(options, "radios options");
Tag[] radios = new Tag[options.size()];

int i = 0;
for (Object opt : options) {
String value = str(opt);
InputTag radio = input().type("radio").class_("pretty").attr("data-label", value).name(name).value(value).checked(U.eq(var.get(), value));
radios[i] = radio; // label(radio, opt).class_("radio-inline");
i++;
}
return radios;
}

public static Tag[] radios(Collection<?> options, Var<?> var) {
return radios(var.name(), options, var);
}

public static Tag[] checkboxes(String name, Collection<?> options, Var<?> var) {
U.notNull(options, "checkboxes options");
Tag[] checkboxes = new Tag[options.size()];

int i = 0;
for (Object opt : options) {
String value = str(opt);
InputTag cc = input().type("checkbox").attr("data-label", value)
.class_("pretty").name(name).value(value).checked(has(var, value));
checkboxes[i] = cc; //label(cc, opt).class_("radio-checkbox");
i++;
}

return checkboxes;
}

public static Tag[] checkboxes(Collection<?> options, Var<?> var) {
return checkboxes(var.name(), options, var);
}

public static Tag[] checkboxes(Collection<?> options, String var) {
return checkboxes(options, var, U.list());
}

public static Tag[] checkboxes(Collection<?> options, String var, Collection<?> defaultValue) {
return checkboxes(options, var(var, serializable(defaultValue)));
}

@SuppressWarnings("unchecked")
private static <T extends Serializable> T serializable(Object value) {
if (value == null || value instanceof Serializable) {
return (T) value;
} else {
throw U.rte("Not serializable: " + value);
}
public static Dropdown dropdown() {
return Cls.customizable(Dropdown.class);
}

public static Object display(Object item) {
Expand Down
@@ -0,0 +1,88 @@
package org.rapidoid.gui.base;

import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;
import org.rapidoid.commons.AnyObj;
import org.rapidoid.gui.GUI;
import org.rapidoid.u.U;
import org.rapidoid.var.Var;

/*
* #%L
* rapidoid-gui
* %%
* Copyright (C) 2014 - 2016 Nikolche Mihajlovski and contributors
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/

@Authors("Nikolche Mihajlovski")
@Since("5.1.0")
public abstract class AbstractInput<W extends AbstractInput<?>> extends AbstractWidget<W> {

protected Var<?> var;

protected String name;

public Var<?> var() {
return var;
}

public W var(Var<?> var) {
this.var = var;
return me();
}

public String name() {
return name;
}

public W name(String name) {
this.name = name;
return me();
}

protected static boolean has(Var<?> var, Object value) {
return var != null && AnyObj.contains(var.get(), str(value));
}

protected static String str(Object value) {
return GUI.str(value);
}

protected Var<?> _var() {
return var != null ? var : U.notEmpty(name) ? GUI.var(name) : null;
}

protected Object _valOr(Object initial) {
Var<?> _var = _var();
Object value = _var != null ? _var.get() : null;
return U.or(value, initial);
}

protected String _strVal(Object initial) {
Var<?> _var = _var();
Object value = _var != null ? _var.get() : null;
return str(U.or(value, initial, ""));
}

protected String _name() {
return U.or(name, var != null ? var.name() : null);
}

protected boolean picked(Object value, boolean initial) {
return req().isGetReq() ? initial : has(_var(), value);
}

}

0 comments on commit 33dc3be

Please sign in to comment.