/*
* ******************************************************************************
* * Copyright 2015 See AUTHORS file.
* *
* * 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.
* *****************************************************************************
*/
package com.uwsoft.editor.utils;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.utils.Align;
import com.kotcrab.vis.ui.InputValidator;
import com.kotcrab.vis.ui.VisUI;
import com.kotcrab.vis.ui.widget.NumberSelector;
import com.kotcrab.vis.ui.widget.VisLabel;
import com.kotcrab.vis.ui.widget.VisTextField;
import com.kotcrab.vis.ui.widget.VisValidatableTextField;
import com.uwsoft.editor.proxy.CursorManager;
import com.uwsoft.editor.view.ui.widget.CursorListener;
/**
* Creates standard widgets like labels or text fields with provided standard Overlap2D specific visual style.
* Singleton helper class
*
* Created by azakhary on 5/12/2015.
*/
public class StandardWidgetsFactory {
private static StandardWidgetsFactory instance;
private StandardWidgetsFactory() {
}
public static StandardWidgetsFactory getInstance() {
if(instance == null) {
instance = new StandardWidgetsFactory();
}
return instance;
}
public static VisLabel createLabel(String text, int alignment) {
Skin skin = VisUI.getSkin();
VisLabel visLabel = new VisLabel(text, alignment);
visLabel.setStyle(skin.get("small", Label.LabelStyle.class));
return visLabel;
}
public static VisLabel createLabel(String text) {
return createLabel(text, Align.right);
}
public static VisTextField createTextField() {
return createTextField("default");
}
public static VisTextField createTextField(String style) {
VisTextField visTextField = new VisTextField("", style);
visTextField.addListener(new CursorListener(CursorManager.TEXT));
return visTextField;
}
public static VisTextField createTextField(String style, boolean textCursor)
{
VisTextField visTextField = new VisTextField();
Skin skin = VisUI.getSkin();
visTextField.setStyle(skin.get(style, VisTextField.VisTextFieldStyle.class));
if(textCursor)
visTextField.addListener(new CursorListener(CursorManager.TEXT));
return visTextField;
}
public static VisTextField createTextField(String style, VisTextField.TextFieldFilter textFieldFilter) {
VisTextField visTextField = createTextField(style);
visTextField.setTextFieldFilter(textFieldFilter);
return visTextField;
}
public static VisValidatableTextField createValidableTextField(InputValidator inputValidator) {
VisValidatableTextField visTextField = createValidableTextField("default", inputValidator);
return visTextField;
}
public static VisValidatableTextField createValidableTextField(String style, InputValidator inputValidator) {
VisValidatableTextField visTextField = new VisValidatableTextField(inputValidator);
Skin skin = VisUI.getSkin();
visTextField.setStyle(skin.get(style, VisTextField.VisTextFieldStyle.class));
visTextField.addListener(new CursorListener(CursorManager.TEXT));
return visTextField;
}
public static VisValidatableTextField createValidableTextField(String style, InputValidator inputValidator, VisTextField.TextFieldFilter textFieldFilter) {
VisValidatableTextField visTextField = createValidableTextField(style, inputValidator);
visTextField.setTextFieldFilter(textFieldFilter);
visTextField.addListener(new CursorListener(CursorManager.TEXT));
return visTextField;
}
public static NumberSelector createNumberSelector(int min, int max) {
return createNumberSelector("default", min, max);
}
public static NumberSelector createNumberSelector(String style, int min, int max) {
return createNumberSelector(style, 0, min, max, 1);
}
public static NumberSelector createNumberSelector(String style, int initialValue, int min, int max, int step) {
NumberSelector selector = new NumberSelector(style, "", initialValue, min, max, step);
return selector;
}
}