6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.javafx.scene.control.skin;
27
28 import static org.junit.Assert.assertEquals;
29 import javafx.geometry.Insets;
30 import javafx.scene.control.MenuButton;
31 import javafx.scene.control.MenuItem;
32
33 import org.junit.Before;
34 import org.junit.Ignore;
35 import org.junit.Test;
36
37 /**
38 * This fails with IllegalStateException because of the toolkit's check for the FX application thread
39 */
40 public class MenuButtonSkinTest {
41 private MenuButton menubutton;
42 private MenuButtonSkinMock skin;
43
44 @Before public void setup() {
45 menubutton = new MenuButton();
46 menubutton.getItems().addAll(new MenuItem("Vanilla"), new MenuItem("Chocolate"));
47 skin = new MenuButtonSkinMock(menubutton);
48 // Set some padding so that any places where padding was being
49 // computed but wasn't expected will be caught.
50 menubutton.setPadding(new Insets(10, 10, 10, 10));
51 menubutton.setSkin(skin);
52
53 }
54
55 @Test public void maxWidthTracksPreferred() {
56 menubutton.setPrefWidth(500);
57 assertEquals(500, menubutton.maxWidth(-1), 0);
58 }
59
60 @Test public void maxHeightTracksPreferred() {
61 menubutton.setPrefHeight(100);
62 assertEquals(100, menubutton.maxHeight(-1), 0);
63 }
64
65 public static final class MenuButtonSkinMock extends MenuButtonSkin {
66 boolean propertyChanged = false;
67 int propertyChangeCount = 0;
68 public MenuButtonSkinMock(MenuButton menubutton) {
69 super(menubutton);
70 }
71
72 @Override protected void handleControlPropertyChanged(String p) {
73 super.handleControlPropertyChanged(p);
74 propertyChanged = true;
75 propertyChangeCount++;
76 }
77 }
78 }
|
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package javafx.scene.control.skin;
27
28 import static org.junit.Assert.assertEquals;
29
30 import javafx.beans.value.ObservableValue;
31 import javafx.geometry.Insets;
32 import javafx.scene.control.MenuButton;
33 import javafx.scene.control.MenuItem;
34
35 import javafx.scene.control.skin.MenuButtonSkin;
36 import org.junit.Before;
37 import org.junit.Test;
38
39 /**
40 * This fails with IllegalStateException because of the toolkit's check for the FX application thread
41 */
42 public class MenuButtonSkinTest {
43 private MenuButton menubutton;
44 private MenuButtonSkinMock skin;
45
46 @Before public void setup() {
47 menubutton = new MenuButton();
48 menubutton.getItems().addAll(new MenuItem("Vanilla"), new MenuItem("Chocolate"));
49 skin = new MenuButtonSkinMock(menubutton);
50 // Set some padding so that any places where padding was being
51 // computed but wasn't expected will be caught.
52 menubutton.setPadding(new Insets(10, 10, 10, 10));
53 menubutton.setSkin(skin);
54
55 }
56
57 @Test public void maxWidthTracksPreferred() {
58 menubutton.setPrefWidth(500);
59 assertEquals(500, menubutton.maxWidth(-1), 0);
60 }
61
62 @Test public void maxHeightTracksPreferred() {
63 menubutton.setPrefHeight(100);
64 assertEquals(100, menubutton.maxHeight(-1), 0);
65 }
66
67 public static final class MenuButtonSkinMock extends MenuButtonSkin {
68 boolean propertyChanged = false;
69 int propertyChangeCount = 0;
70 public MenuButtonSkinMock(MenuButton menubutton) {
71 super(menubutton);
72 }
73
74 public void addWatchedProperty(ObservableValue<?> p) {
75 p.addListener(o -> {
76 propertyChanged = true;
77 propertyChangeCount++;
78 });
79 }
80 }
81 }
|