src/java.desktop/unix/classes/sun/awt/X11/XFileDialogPeer.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
--- 1,7 ----
/*
! * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
*** 30,48 ****
import java.awt.event.*;
import java.awt.peer.*;
import java.io.*;
import java.util.Locale;
import java.util.Arrays;
- import com.sun.java.swing.plaf.motif.*;
- import javax.swing.plaf.ComponentUI;
import java.security.AccessController;
import java.security.PrivilegedAction;
import sun.util.logging.PlatformLogger;
import sun.awt.AWTAccessor;
! class XFileDialogPeer extends XDialogPeer implements FileDialogPeer, ActionListener, ItemListener, KeyEventDispatcher, XChoicePeerListener {
! private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11.XFileDialogPeer");
FileDialog target;
// This variable holds value exactly the same as value of the 'target.file' variable except:
// 1) is changed to null after quit (see handleQuitButton())
--- 30,52 ----
import java.awt.event.*;
import java.awt.peer.*;
import java.io.*;
import java.util.Locale;
import java.util.Arrays;
import java.security.AccessController;
import java.security.PrivilegedAction;
+
+ import sun.awt.AWTAccessor.ComponentAccessor;
import sun.util.logging.PlatformLogger;
import sun.awt.AWTAccessor;
! class XFileDialogPeer extends XDialogPeer
! implements FileDialogPeer, ActionListener, ItemListener,
! KeyEventDispatcher, XChoicePeerListener {
!
! private static final PlatformLogger log =
! PlatformLogger.getLogger("sun.awt.X11.XFileDialogPeer");
FileDialog target;
// This variable holds value exactly the same as value of the 'target.file' variable except:
// 1) is changed to null after quit (see handleQuitButton())
*** 284,294 ****
1, 0, GridBagConstraints.HORIZONTAL, buttonsInset);
fileDialog.setSize(400, 400);
// Update choice's popup width
! XChoicePeer choicePeer = (XChoicePeer)pathChoice.getPeer();
choicePeer.setDrawSelectedItem(false);
choicePeer.setAlignUnder(pathField);
filterField.addActionListener(this);
selectionField.addActionListener(this);
--- 288,299 ----
1, 0, GridBagConstraints.HORIZONTAL, buttonsInset);
fileDialog.setSize(400, 400);
// Update choice's popup width
! XChoicePeer choicePeer = AWTAccessor.getComponentAccessor()
! .getPeer(pathChoice);
choicePeer.setDrawSelectedItem(false);
choicePeer.setAlignUnder(pathField);
filterField.addActionListener(this);
selectionField.addActionListener(this);
*** 640,667 ****
handleQuitButton();
}
}
}
- @SuppressWarnings("deprecation")
public boolean dispatchKeyEvent(KeyEvent keyEvent) {
int id = keyEvent.getID();
int keyCode = keyEvent.getKeyCode();
if (id == KeyEvent.KEY_PRESSED && keyCode == KeyEvent.VK_ESCAPE) {
synchronized (target.getTreeLock()) {
Component comp = (Component) keyEvent.getSource();
while (comp != null) {
// Fix for 6240084 Disposing a file dialog when the drop-down is active does not dispose the dropdown menu, on Xtoolkit
// See also 6259493
if (comp == pathChoice) {
! XChoicePeer choicePeer = (XChoicePeer)pathChoice.getPeer();
if (choicePeer.isUnfurled()){
return false;
}
}
! if (comp.getPeer() == this) {
handleCancel();
return true;
}
comp = comp.getParent();
}
--- 645,673 ----
handleQuitButton();
}
}
}
public boolean dispatchKeyEvent(KeyEvent keyEvent) {
int id = keyEvent.getID();
int keyCode = keyEvent.getKeyCode();
if (id == KeyEvent.KEY_PRESSED && keyCode == KeyEvent.VK_ESCAPE) {
synchronized (target.getTreeLock()) {
Component comp = (Component) keyEvent.getSource();
while (comp != null) {
// Fix for 6240084 Disposing a file dialog when the drop-down is active does not dispose the dropdown menu, on Xtoolkit
// See also 6259493
+ ComponentAccessor acc = AWTAccessor.getComponentAccessor();
if (comp == pathChoice) {
! XChoicePeer choicePeer = acc.getPeer(pathChoice);
if (choicePeer.isUnfurled()){
return false;
}
}
! Object peer = acc.getPeer(comp);
! if (peer == this) {
handleCancel();
return true;
}
comp = comp.getParent();
}
*** 794,813 ****
// Seems we shouldn't restore Motif behaviour in this case
setFile(savedFile);
}
super.setVisible(b);
if (b == true){
// See 6240074 for more information
- XChoicePeer choicePeer = (XChoicePeer)pathChoice.getPeer();
choicePeer.addXChoicePeerListener(this);
! KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(this);
}else{
// See 6240074 for more information
- XChoicePeer choicePeer = (XChoicePeer)pathChoice.getPeer();
choicePeer.removeXChoicePeerListener();
! KeyboardFocusManager.getCurrentKeyboardFocusManager().removeKeyEventDispatcher(this);
}
selectionField.requestFocusInWindow();
}
--- 800,821 ----
// Seems we shouldn't restore Motif behaviour in this case
setFile(savedFile);
}
super.setVisible(b);
+ XChoicePeer choicePeer = AWTAccessor.getComponentAccessor()
+ .getPeer(pathChoice);
if (b == true){
// See 6240074 for more information
choicePeer.addXChoicePeerListener(this);
! KeyboardFocusManager.getCurrentKeyboardFocusManager()
! .addKeyEventDispatcher(this);
}else{
// See 6240074 for more information
choicePeer.removeXChoicePeerListener();
! KeyboardFocusManager.getCurrentKeyboardFocusManager()
! .removeKeyEventDispatcher(this);
}
selectionField.requestFocusInWindow();
}