Package com.dooapp.fxform.resource

Source Code of com.dooapp.fxform.resource.DefaultResourceProvider

package com.dooapp.fxform.resource;

import com.dooapp.fxform.model.Element;
import com.dooapp.fxform.view.NodeType;
import javafx.beans.binding.StringBinding;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;

import java.util.ResourceBundle;

/**
* User: Antoine Mischler <antoine@dooapp.com>
* Date: 03/12/2013
* Time: 11:28
*/
public class DefaultResourceProvider implements ResourceProvider {

  private final ObjectProperty<ResourceBundle> resourceBundle = new SimpleObjectProperty<ResourceBundle>();

  @Override
  public StringProperty getString(final Element element, final NodeType nodeType) {
    SimpleStringProperty string = new SimpleStringProperty();
    string.bind(new StringBinding() {

      {
        bind(resourceBundle);
      }

      @Override
      protected String computeValue() {
        String label;
        try {
          label = getResourceBundle().getString(element.getDeclaringClass().getName()
              + "-" + element.getName()
              + "-" + nodeType.name().toLowerCase());
        } catch (Exception e1) {
          try {
            label = getResourceBundle().getString(element.getDeclaringClass().getSimpleName()
                + "-" + element.getName()
                + "-" + nodeType.name().toLowerCase());
          } catch (Exception e2) {
            // Look for a generic label without the bean name
            try {
              label = getResourceBundle().getString(element.getName()
                  + "-" + nodeType.name().toLowerCase());
            } catch (Exception e3) {
              // Label is undefined in the resource bundle
              label = handleDefaultValue(element.getName(), nodeType);
            }
          }
        }
        return label;
      }
    });
    return string;
  }

  private String handleDefaultValue(String name, NodeType nodeType) {
    if (nodeType == NodeType.LABEL) {
      return name;
    }
    else {
      return null;
    }
  }

  public ResourceBundle getResourceBundle() {
    return resourceBundle.get();
  }

  public ObjectProperty<ResourceBundle> resourceBundleProperty() {
    return resourceBundle;
  }

  public void setResourceBundle(ResourceBundle resourceBundle) {
    this.resourceBundle.set(resourceBundle);
  }
}
TOP

Related Classes of com.dooapp.fxform.resource.DefaultResourceProvider

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.