Skip to main content
summaryrefslogtreecommitdiffstats
blob: e42090cf764eed349d073470045a99629736a893 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*******************************************************************************
 * Copyright (c) 2016 BestSolution.at and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Tom Schindl<tom.schindl@bestsolution.at> - initial API and implementation
 *******************************************************************************/
package org.eclipse.fx.ui.panes;

import java.util.function.Predicate;

import javafx.beans.value.WritableValue;
import javafx.scene.layout.StackPane;

/**
 * A {@link StackPane} who is able break the recursive CSS & Layout-Pass call
 * chain
 */
public class LazyStackPane extends StackPane {
	/**
	 * The check type
	 */
	public enum CheckType {
		/**
		 * Should a layout pass be forwarded
		 */
		LAYOUT,
		/**
		 * Should a css pass be forwarded
		 */
		CSS
	}

	private Predicate<CheckType> checkSupplier;

	/**
	 * Create a pane who can optimize CSS & Layout-Passes
	 *
	 * @param checkSupplier
	 *            the supplier
	 */
	public LazyStackPane(Predicate<CheckType> checkSupplier) {
		this.checkSupplier = checkSupplier;
	}

	@SuppressWarnings("deprecation")
	@Override
	protected void impl_processCSS(WritableValue<Boolean> unused) {
		if (this.checkSupplier.test(CheckType.CSS)) {
			super.impl_processCSS(unused);
		}

	}

	@Override
	protected void layoutChildren() {
		if (this.checkSupplier.test(CheckType.LAYOUT)) {
			super.layoutChildren();
		}
	}
}

Back to the top