Package lcmc.cluster.ui.widget

Source Code of lcmc.cluster.ui.widget.WidgetFactory

/*
* This file is part of LCMC
*
* Copyright (C) 2012, Rastislav Levrinc.
*
* LCMC is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* DRBD Management Console is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with drbd; see the file COPYING.  If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package lcmc.cluster.ui.widget;

import java.awt.Color;
import java.util.Map;
import lcmc.common.domain.AccessMode;
import lcmc.common.domain.Value;
import lcmc.logger.Logger;
import lcmc.logger.LoggerFactory;
import lcmc.common.ui.utils.MyButton;
import lcmc.common.domain.Unit;

import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
import javax.inject.Singleton;
import javax.swing.Icon;

@Named
@Singleton
public final class WidgetFactory {
    private final Logger LOG = LoggerFactory.getLogger(WidgetFactory.class);
    @Inject
    private Provider<Label> labelProvider;
    @Inject
    private Provider<ComboBox> comboBoxProvider;
    @Inject @Named("passwdfield")
    private Provider<Passwdfield> passwdFieldProvider;
    @Inject @Named("textfield")
    private Provider<Textfield> textfieldInstance;
    @Inject
    private Provider<TextfieldWithUnit> textFieldWithUnitProvider;
    @Inject
    private Provider<RadioGroup> radioGroupProvider;
    @Inject
    private Provider<Checkbox> checkboxProvider;

    /** Without units. */
    public Widget createInstance(final Widget.Type type,
                                 final Value selectedValue,
                                 final Value[] items,
                                 final String regexp,
                                 final int width,
                                 final Map<String, String> abbreviations,
                                 final AccessMode enableAccessMode,
                                 final MyButton fieldButton) {
        return createInstance(type,
                              selectedValue,
                              items,
                              null,
                              regexp,
                              width,
                              abbreviations,
                              enableAccessMode,
                              fieldButton);
    }

    public Widget createInstance(Widget.Type type,
                                 final Value selectedValue,
                                 final Value[] items,
                                 final Unit[] units,
                                 final String regexp,
                                 final int width,
                                 final Map<String, String> abbreviations,
                                 final AccessMode enableAccessMode,
                                 final MyButton fieldButton) {
        if (type != null && type != Widget.Type.TEXTFIELDWITHUNIT && units != null) {
            LOG.appError("createInstance: wrong type with units: " + type);
        }
        if (type == null || type == Widget.GUESS_TYPE) {
            /* type detection */
            if (units != null) {
                type = Widget.Type.TEXTFIELDWITHUNIT;
            } else if (items == null || items.length == 0) {
                type = Widget.Type.TEXTFIELD;
            } else if (items.length == 2) {
                if (items[0] != null
                    && items[0].toString().equalsIgnoreCase(Checkbox.CHECKBOX_TRUE)
                    && items[1] != null
                    && items[1].toString().equalsIgnoreCase(Checkbox.CHECKBOX_FALSE)) {
                    type = Widget.Type.CHECKBOX;
                } else {
                    type = Widget.Type.COMBOBOX;
                }
            } else {
                type = Widget.Type.COMBOBOX;
            }
        }
        switch(type) {
            case LABELFIELD:
                final Label label = labelProvider.get();
                label.init(selectedValue, regexp, width, enableAccessMode, fieldButton);
                return label;
            case COMBOBOX:
                final ComboBox comboBox = comboBoxProvider.get();
                comboBox.init(selectedValue, items, regexp, width, abbreviations, enableAccessMode, fieldButton);
                return comboBox;
            case PASSWDFIELD:
                final Passwdfield passwdfield = passwdFieldProvider.get();
                passwdfield.init(selectedValue, regexp, width, enableAccessMode, fieldButton);
                return passwdfield;
            case TEXTFIELD:
                final Textfield textfield = textfieldInstance.get();
                textfield.init(selectedValue, regexp, width, abbreviations, enableAccessMode, fieldButton);
                return textfield;
            case TEXTFIELDWITHUNIT:
                final TextfieldWithUnit textfieldWithUnit = textFieldWithUnitProvider.get();
                textfieldWithUnit.init(selectedValue,
                                       units,
                                       regexp,
                                       width,
                                       abbreviations,
                                       enableAccessMode,
                                       fieldButton);
                return textfieldWithUnit;
            case RADIOGROUP:
                final RadioGroup radioGroup = radioGroupProvider.get();
                radioGroup.init(selectedValue, items, regexp, width, enableAccessMode, fieldButton);
                return radioGroup;
            case CHECKBOX:
                final Checkbox checkbox = checkboxProvider.get();
                checkbox.init(selectedValue, items, regexp, width, enableAccessMode, fieldButton);
                return checkbox;
            default:
                LOG.appError("createInstance: unknown type: " + type);
                return null;
        }
    }

    public MyButton createButton() {
        return new MyButton();
    }

    public MyButton createButton(final String text) {
        return new MyButton(text);
    }

    public MyButton createButton(final String text, final Icon icon) {
        return new MyButton(text, icon);
    }

    public MyButton createButton(final String text, final Icon icon, final String toolTipText) {
        return new MyButton(text, icon, toolTipText);
    }

    public MyButton createButton(final Color c1, final Color c2) {
        return new MyButton(c1, c2);
    }
}
TOP

Related Classes of lcmc.cluster.ui.widget.WidgetFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.