35 import com.sun.java.swing.plaf.motif.*; |
35 import com.sun.java.swing.plaf.motif.*; |
36 import javax.swing.plaf.ComponentUI; |
36 import javax.swing.plaf.ComponentUI; |
37 import java.security.AccessController; |
37 import java.security.AccessController; |
38 import java.security.PrivilegedAction; |
38 import java.security.PrivilegedAction; |
39 import sun.util.logging.PlatformLogger; |
39 import sun.util.logging.PlatformLogger; |
|
40 import sun.awt.AWTAccessor; |
40 |
41 |
41 class XFileDialogPeer extends XDialogPeer implements FileDialogPeer, ActionListener, ItemListener, KeyEventDispatcher, XChoicePeerListener { |
42 class XFileDialogPeer extends XDialogPeer implements FileDialogPeer, ActionListener, ItemListener, KeyEventDispatcher, XChoicePeerListener { |
42 private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11.XFileDialogPeer"); |
43 private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11.XFileDialogPeer"); |
43 |
44 |
44 FileDialog target; |
45 FileDialog target; |
168 cancelButton = new Button(cancelButtonText); |
169 cancelButton = new Button(cancelButtonText); |
169 directoryList = new List(); |
170 directoryList = new List(); |
170 fileList = new List(); |
171 fileList = new List(); |
171 filterField = new TextField(); |
172 filterField = new TextField(); |
172 selectionField = new TextField(); |
173 selectionField = new TextField(); |
|
174 |
|
175 boolean isMultipleMode = |
|
176 AWTAccessor.getFileDialogAccessor().isMultipleMode(target); |
|
177 fileList.setMultipleMode(isMultipleMode); |
173 |
178 |
174 // the insets used by the components in the fileDialog |
179 // the insets used by the components in the fileDialog |
175 Insets noInset = new Insets(0, 0, 0, 0); |
180 Insets noInset = new Insets(0, 0, 0, 0); |
176 Insets textFieldInset = new Insets(0, 8, 0, 8); |
181 Insets textFieldInset = new Insets(0, 8, 0, 8); |
177 Insets leftListInset = new Insets(0, 8, 0, 4); |
182 Insets leftListInset = new Insets(0, 8, 0, 4); |
378 |
383 |
379 /** |
384 /** |
380 * handle the selection event |
385 * handle the selection event |
381 */ |
386 */ |
382 void handleSelection(String file) { |
387 void handleSelection(String file) { |
383 int index = file.lastIndexOf('/'); |
388 |
|
389 int index = file.lastIndexOf(java.io.File.separatorChar); |
384 |
390 |
385 if (index == -1) { |
391 if (index == -1) { |
386 savedDir = this.dir; |
392 savedDir = this.dir; |
387 savedFile = file; |
393 savedFile = file; |
388 } else { |
394 } else { |
389 savedDir = file.substring(0, index+1); |
395 savedDir = file.substring(0, index+1); |
390 savedFile = file.substring(index+1); |
396 savedFile = file.substring(index+1); |
391 } |
397 } |
392 target.setDirectory(savedDir); |
398 |
393 target.setFile(savedFile); |
399 AWTAccessor.FileDialogAccessor fileDialogAccessor = AWTAccessor.getFileDialogAccessor(); |
|
400 |
|
401 fileDialogAccessor.setDirectory(target, savedDir); |
|
402 fileDialogAccessor.setFile(target, savedFile); |
|
403 fileDialogAccessor.setFiles(target, savedDir, fileList.getSelectedItems()); |
394 } |
404 } |
395 |
405 |
396 /** |
406 /** |
397 * handle the cancel event |
407 * handle the cancel event |
398 */ |
408 */ |
402 |
412 |
403 setSelectionField(null); |
413 setSelectionField(null); |
404 setFilterField(null); |
414 setFilterField(null); |
405 directoryList.clear(); |
415 directoryList.clear(); |
406 fileList.clear(); |
416 fileList.clear(); |
407 target.setFile(null); |
417 |
408 target.setDirectory(null); |
418 AWTAccessor.FileDialogAccessor fileDialogAccessor = AWTAccessor.getFileDialogAccessor(); |
|
419 |
|
420 fileDialogAccessor.setDirectory(target, null); |
|
421 fileDialogAccessor.setFile(target, null); |
|
422 fileDialogAccessor.setFiles(target, null, null); |
|
423 |
409 handleQuitButton(); |
424 handleQuitButton(); |
410 } |
425 } |
411 |
426 |
412 /** |
427 /** |
413 * handle the quit event |
428 * handle the quit event |