1 /* 2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 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.stage; 27 28 import com.sun.glass.ui.CommonDialogs.FileChooserResult; 29 import com.sun.javafx.pgstub.StubToolkit; 30 import com.sun.javafx.pgstub.StubToolkit.CommonDialogsSupport; 31 import com.sun.javafx.tk.FileChooserType; 32 import com.sun.javafx.tk.TKStage; 33 import com.sun.javafx.tk.Toolkit; 34 import java.io.File; 35 import java.util.List; 36 import javafx.stage.FileChooser.ExtensionFilter; 37 import org.junit.After; 38 import org.junit.Assert; 39 import org.junit.Before; 40 import org.junit.Test; 41 42 public final class CommonDialogsTest { 43 private StubToolkit toolkit; 44 private StubCommonDialogs stubDialogs; 45 46 @Before 47 public void setUp() { 48 toolkit = (StubToolkit) Toolkit.getToolkit(); 49 stubDialogs = new StubCommonDialogs(); 50 51 toolkit.setCommonDialogsSupport(stubDialogs); 52 } 53 54 @After 55 public void tearDown() { 56 toolkit.setCommonDialogsSupport(null); 57 } 58 59 @Test 60 public void testFileChooser_showOpenDialog() { 61 final FileChooser fileChooser = new FileChooser(); 62 final ExtensionFilter txtFiles = 63 new ExtensionFilter("Text Files", "*.txt"); 64 final ExtensionFilter jpgFiles = 65 new ExtensionFilter("JPEG Files", "*.jpg"); 66 final File initialDirectory = new File("."); 67 68 fileChooser.setTitle("Open Single"); 69 fileChooser.setInitialDirectory(initialDirectory); 70 fileChooser.setInitialFileName("open.txt"); 71 fileChooser.getExtensionFilters().addAll(txtFiles, jpgFiles); 72 fileChooser.setSelectedExtensionFilter(txtFiles); 73 74 Assert.assertEquals( 75 null, fileChooser.showOpenDialog(null)); 76 Assert.assertEquals(FileChooserType.OPEN, 77 stubDialogs.getFileChooserType()); 78 Assert.assertEquals(null, stubDialogs.getOwnerWindow()); 79 Assert.assertEquals("Open Single", stubDialogs.getTitle()); 80 Assert.assertEquals(initialDirectory, 81 stubDialogs.getInitialDirectory()); 82 Assert.assertEquals("open.txt", stubDialogs.getInitialFileName()); 83 Assert.assertArrayEquals( 84 new Object[] { txtFiles, jpgFiles }, 85 stubDialogs.getExtensionFilters().toArray()); 86 Assert.assertEquals(txtFiles, stubDialogs.getSelectedExtensionFilter()); 87 } 88 89 @Test 90 public void testFileChooser_showOpenMultipleDialog() { 91 final FileChooser fileChooser = new FileChooser(); 92 final ExtensionFilter allFiles = 93 new ExtensionFilter("All Files", "*.*"); 94 95 fileChooser.setTitle("Open Multiple"); 96 fileChooser.getExtensionFilters().addAll(allFiles); 97 98 Assert.assertEquals( 99 null, fileChooser.showOpenMultipleDialog(null)); 100 Assert.assertEquals(FileChooserType.OPEN_MULTIPLE, 101 stubDialogs.getFileChooserType()); 102 Assert.assertEquals(null, stubDialogs.getOwnerWindow()); 103 Assert.assertEquals("Open Multiple", stubDialogs.getTitle()); 104 Assert.assertEquals(null, stubDialogs.getInitialDirectory()); 105 Assert.assertEquals(null, stubDialogs.getInitialFileName()); 106 Assert.assertArrayEquals( 107 new Object[] { allFiles }, 108 stubDialogs.getExtensionFilters().toArray()); 109 Assert.assertEquals(null, stubDialogs.getSelectedExtensionFilter()); 110 } 111 112 @Test 113 public void testFileChooser_showSaveDialog() { 114 final FileChooser fileChooser = new FileChooser(); 115 final File initialDirectory = new File("."); 116 117 fileChooser.setTitle("Save"); 118 fileChooser.setInitialDirectory(initialDirectory); 119 fileChooser.setInitialFileName("save.txt"); 120 121 Assert.assertEquals( 122 null, fileChooser.showSaveDialog(null)); 123 Assert.assertEquals(FileChooserType.SAVE, 124 stubDialogs.getFileChooserType()); 125 Assert.assertEquals(null, stubDialogs.getOwnerWindow()); 126 Assert.assertEquals("Save", stubDialogs.getTitle()); 127 Assert.assertEquals(initialDirectory, 128 stubDialogs.getInitialDirectory()); 129 Assert.assertEquals("save.txt", stubDialogs.getInitialFileName()); 130 Assert.assertEquals(0, stubDialogs.getExtensionFilters().size()); 131 Assert.assertEquals(null, stubDialogs.getSelectedExtensionFilter()); 132 } 133 134 @Test 135 public void testDirectoryChooser_showDialog() { 136 final DirectoryChooser directoryChooser = new DirectoryChooser(); 137 final File initialDirectory = new File("."); 138 139 directoryChooser.setTitle("Open"); 140 directoryChooser.setInitialDirectory(initialDirectory); 141 142 Assert.assertEquals( 143 null, directoryChooser.showDialog(null)); 144 Assert.assertEquals(null, stubDialogs.getOwnerWindow()); 145 Assert.assertEquals("Open", stubDialogs.getTitle()); 146 Assert.assertEquals(initialDirectory, 147 stubDialogs.getInitialDirectory()); 148 } 149 150 private static final class StubCommonDialogs 151 implements CommonDialogsSupport { 152 private FileChooserType fileChooserType; 153 private TKStage ownerWindow; 154 private String title; 155 private File initialDirectory; 156 private String initialFileName; 157 private List<ExtensionFilter> extensionFilters; 158 private ExtensionFilter selectedExtensionFilter; 159 160 public FileChooserType getFileChooserType() { 161 return fileChooserType; 162 } 163 164 public TKStage getOwnerWindow() { 165 return ownerWindow; 166 } 167 168 public String getTitle() { 169 return title; 170 } 171 172 public File getInitialDirectory() { 173 return initialDirectory; 174 } 175 176 public String getInitialFileName() { 177 return initialFileName; 178 } 179 180 public List<ExtensionFilter> getExtensionFilters() { 181 return extensionFilters; 182 } 183 184 public ExtensionFilter getSelectedExtensionFilter() { 185 return selectedExtensionFilter; 186 } 187 188 @Override 189 public FileChooserResult showFileChooser( 190 final TKStage ownerWindow, 191 final String title, 192 final File initialDirectory, 193 final String initialFileName, 194 final FileChooserType fileChooserType, 195 final List<ExtensionFilter> extensionFilters, 196 final ExtensionFilter selectedFilter) { 197 this.ownerWindow = ownerWindow; 198 this.title = title; 199 this.initialDirectory = initialDirectory; 200 this.initialFileName = initialFileName; 201 this.fileChooserType = fileChooserType; 202 this.extensionFilters = extensionFilters; 203 this.selectedExtensionFilter = selectedFilter; 204 205 return null; 206 } 207 208 @Override 209 public File showDirectoryChooser(final TKStage ownerWindow, 210 final String title, 211 final File initialDirectory) { 212 this.ownerWindow = ownerWindow; 213 this.title = title; 214 this.initialDirectory = initialDirectory; 215 216 return null; 217 } 218 } 219 }