All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.guigarage.flatterfx.FlatterFX Maven / Gradle / Ivy

The newest version!
package com.guigarage.flatterfx;

import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;

import javafx.scene.Scene;
import javafx.scene.control.PopupControl;

import com.guigarage.flatterfx.overlay.OverlayPane;
import com.sun.javafx.css.StyleManager;

public class FlatterFX {

    private final static String FLATTER_CSS_FILE = "flatterfx.css";
    
    private Map, WeakReference> layers;
    
    private static FlatterFX instance;

    private FlatterInputType inputType = FlatterInputType.DEFAULT;
    
    private FlatterFX() {
    	layers = new HashMap<>();
    }

    public static synchronized FlatterFX getInstance() {
        if (instance == null) {
            instance = new FlatterFX();
        }
        return instance;
    }

    public FlatterInputType getInputType() {
		return inputType;
	}
    
    /**
     * Applies FlatterFx skinning to the application.
     */
    public static void style(FlatterInputType inputType) {    	
		StyleManager.getInstance().addUserAgentStylesheet(FlatterFX.class.getResource(FLATTER_CSS_FILE).toExternalForm());
    }
    
    /**
     * Applies FlatterFx skinning to the application.
     */
    public static void style() {
        style(FlatterInputType.DEFAULT);
    }
    
    public void setOverlayLayerForScene(Scene scene, OverlayPane overlayLayer) {
    	layers.put(new WeakReference<>(scene), new WeakReference<>(overlayLayer));
    }
    
    public OverlayPane getOverlayLayer(Scene scene) {
    	for(WeakReference keyRef : layers.keySet()) {
    		Scene keyScene = keyRef.get();
    		if(keyScene != null && keyScene.equals(scene)) {
    			return layers.get(keyRef).get();
    		}
    	}
    	
    	PopupControl popupControl = new PopupControl();
    	//TODO: Auf Basis des popup ein OverlayPane bauen
    	
    	return null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy