aboutsummaryrefslogtreecommitdiff
path: root/src/solaris/classes/sun/awt
diff options
context:
space:
mode:
authorlana <none@none>2013-10-08 14:53:14 -0700
committerlana <none@none>2013-10-08 14:53:14 -0700
commit80c71338a257b2e863e32c8026d476a35a21e5e4 (patch)
treea8f376ba74517373aaadce964b1daa574700b85d /src/solaris/classes/sun/awt
parent08788f5175d21d9b936d5e6fabb606dfd73e0228 (diff)
parent182c28b23f21a94de48410979716829f118db30b (diff)
downloadjdk8u_jdk-80c71338a257b2e863e32c8026d476a35a21e5e4.tar.gz
Merge
Diffstat (limited to 'src/solaris/classes/sun/awt')
-rw-r--r--src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java9
-rw-r--r--src/solaris/classes/sun/awt/X11/XComponentPeer.java8
-rw-r--r--src/solaris/classes/sun/awt/X11/XSelection.java4
-rw-r--r--src/solaris/classes/sun/awt/X11/XTextAreaPeer.java238
-rw-r--r--src/solaris/classes/sun/awt/X11/XTextFieldPeer.java183
-rw-r--r--src/solaris/classes/sun/awt/X11/XToolkit.java11
-rw-r--r--src/solaris/classes/sun/awt/X11GraphicsEnvironment.java9
7 files changed, 211 insertions, 251 deletions
diff --git a/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java b/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java
index 783f4acb93..2d611b7a72 100644
--- a/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java
+++ b/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java
@@ -116,6 +116,8 @@ abstract public class XBaseMenuWindow extends XWindow {
protected Point grabInputPoint = null;
protected boolean hasPointerMoved = false;
+ private AppContext disposeAppContext;
+
/************************************************
*
* Mapping data
@@ -174,6 +176,8 @@ abstract public class XBaseMenuWindow extends XWindow {
XBaseMenuWindow() {
super(new XCreateWindowParams(new Object[] {
DELAYED, Boolean.TRUE}));
+
+ disposeAppContext = AppContext.getAppContext();
}
/************************************************
@@ -904,12 +908,12 @@ abstract public class XBaseMenuWindow extends XWindow {
*/
public void dispose() {
setDisposed(true);
- InvocationEvent ev = new InvocationEvent(target, new Runnable() {
+
+ SunToolkit.invokeLaterOnAppContext(disposeAppContext, new Runnable() {
public void run() {
doDispose();
}
});
- super.postEvent(ev);
}
/**
@@ -923,7 +927,6 @@ abstract public class XBaseMenuWindow extends XWindow {
if (oldData != null) {
oldData.invalidate();
}
- XToolkit.targetDisposedPeer(target, this);
destroy();
}
diff --git a/src/solaris/classes/sun/awt/X11/XComponentPeer.java b/src/solaris/classes/sun/awt/X11/XComponentPeer.java
index aa74d923e5..d50351af56 100644
--- a/src/solaris/classes/sun/awt/X11/XComponentPeer.java
+++ b/src/solaris/classes/sun/awt/X11/XComponentPeer.java
@@ -607,10 +607,6 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget
public void layout() {}
- public java.awt.Toolkit getToolkit() {
- return Toolkit.getDefaultToolkit();
- }
-
void updateMotifColors(Color bg) {
int red = bg.getRed();
int green = bg.getGreen();
@@ -745,11 +741,11 @@ public class XComponentPeer extends XWindow implements ComponentPeer, DropTarget
}
public boolean prepareImage(Image img, int w, int h, ImageObserver o) {
- return getToolkit().prepareImage(img, w, h, o);
+ return Toolkit.getDefaultToolkit().prepareImage(img, w, h, o);
}
public int checkImage(Image img, int w, int h, ImageObserver o) {
- return getToolkit().checkImage(img, w, h, o);
+ return Toolkit.getDefaultToolkit().checkImage(img, w, h, o);
}
public Dimension preferredSize() {
diff --git a/src/solaris/classes/sun/awt/X11/XSelection.java b/src/solaris/classes/sun/awt/X11/XSelection.java
index f19ad2ffb6..36ebc8e6db 100644
--- a/src/solaris/classes/sun/awt/X11/XSelection.java
+++ b/src/solaris/classes/sun/awt/X11/XSelection.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -375,7 +375,7 @@ public final class XSelection {
XToolkit.awtUnlock();
}
- validateDataGetter(dataGetter);
+ validateDataGetter(incrDataGetter);
if (incrDataGetter.getActualFormat() != 8) {
throw new IOException("Unsupported data format: " +
diff --git a/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java b/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java
index 27465df84a..7c7b2d1936 100644
--- a/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java
+++ b/src/solaris/classes/sun/awt/X11/XTextAreaPeer.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -64,41 +64,20 @@ import sun.awt.AWTAccessor;
import sun.awt.SunToolkit;
-class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
- boolean editable;
+final class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
- AWTTextPane textPane;
- AWTTextArea jtext;
-
- boolean firstChangeSkipped;
-
- private final JavaMouseEventHandler javaMouseEventHandler
- = new JavaMouseEventHandler( this );
-
- /* FIXME */
-
- public long filterEvents(long mask) {
- Thread.dumpStack();
- return 0;
- }
-
- /* FIXME */
- public Rectangle getCharacterBounds(int i) {
- Thread.dumpStack();
- return null;
- }
-
- public int getIndexAtPoint(int x, int y) {
- Thread.dumpStack();
- return 0;
- }
+ private final AWTTextPane textPane;
+ private final AWTTextArea jtext;
+ private final boolean firstChangeSkipped;
+ private final JavaMouseEventHandler javaMouseEventHandler =
+ new JavaMouseEventHandler(this);
/**
* Create a Text area.
*/
XTextAreaPeer(TextArea target) {
- super( target );
+ super(target);
// some initializations require that target be set even
// though init(target) has not been called
@@ -106,8 +85,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
//ComponentAccessor.enableEvents(target,AWTEvent.MOUSE_WHEEL_EVENT_MASK);
- firstChangeSkipped = false;
- String text = ((TextArea)target).getText();
+ String text = target.getText();
jtext = new AWTTextArea(text, this);
jtext.setWrapStyleWord(true);
jtext.getDocument().addDocumentListener(jtext);
@@ -143,29 +121,27 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
setFont(font);
+ // set the text of this object to the text of its target
+ setTextImpl(target.getText()); //?? should this be setText
+
int start = target.getSelectionStart();
int end = target.getSelectionEnd();
-
- if (end > start) {
- select(start, end);
- }
// Fix for 5100200
// Restoring Motif behaviour
// Since the end position of the selected text can be greater then the length of the text,
// so we should set caret to max position of the text
- int caretPosition = Math.min(end, text.length());
- setCaretPosition(caretPosition);
-
+ setCaretPosition(Math.min(end, text.length()));
+ if (end > start) {
+ // Should be called after setText() and setCaretPosition()
+ select(start, end);
+ }
setEditable(target.isEditable());
-
setScrollBarVisibility();
- // set the text of this object to the text of its target
- setTextImpl(target.getText()); //?? should this be setText
-
// After this line we should not change the component's text
firstChangeSkipped = true;
}
+ @Override
public void dispose() {
XToolkit.specialPeerMap.remove(jtext);
// visible caret has a timer thread which must be stopped
@@ -175,7 +151,6 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
super.dispose();
}
-
/*
* The method overrides one from XComponentPeer
* If ignoreSubComponents=={@code true} it calls super.
@@ -201,7 +176,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
javaMouseEventHandler.setCursor();
}
- void setScrollBarVisibility() {
+ private void setScrollBarVisibility() {
int visibility = ((TextArea)target).getScrollbarVisibility();
jtext.setLineWrap(false);
@@ -229,10 +204,12 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
/**
* Compute minimum size.
*/
+ @Override
public Dimension getMinimumSize() {
return getMinimumSize(10, 60);
}
+ @Override
public Dimension getPreferredSize(int rows, int cols) {
return getMinimumSize(rows, cols);
}
@@ -240,7 +217,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
/**
* @see java.awt.peer.TextAreaPeer
*/
-
+ @Override
public Dimension getMinimumSize(int rows, int cols) {
/* Dimension d = null;
if (jtext != null) {
@@ -269,10 +246,12 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
fm.getHeight() * rows + /*2*YMARGIN +*/ hsbheight);
}
+ @Override
public boolean isFocusable() {
return true;
}
+ @Override
public void setVisible(boolean b) {
super.setVisible(b);
if (textPane != null)
@@ -283,27 +262,30 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
jtext.repaintNow();
}
+ @Override
public void focusGained(FocusEvent e) {
super.focusGained(e);
jtext.forwardFocusGained(e);
}
+ @Override
public void focusLost(FocusEvent e) {
super.focusLost(e);
jtext.forwardFocusLost(e);
}
-
/**
* Paint the component
* this method is called when the repaint instruction has been used
*/
+ @Override
public void repaint() {
if (textPane != null) {
//textPane.validate();
textPane.repaint();
}
}
+
@Override
void paintPeer(final Graphics g) {
if (textPane != null) {
@@ -311,6 +293,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ @Override
public void setBounds(int x, int y, int width, int height, int op) {
super.setBounds(x, y, width, height, op);
if (textPane != null) {
@@ -337,21 +320,26 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ @Override
void handleJavaKeyEvent(KeyEvent e) {
AWTAccessor.getComponentAccessor().processEvent(jtext,e);
}
+ @Override
public boolean handlesWheelScrolling() { return true; }
+ @Override
void handleJavaMouseWheelEvent(MouseWheelEvent e) {
- AWTAccessor.getComponentAccessor().processEvent(textPane,e);
+ AWTAccessor.getComponentAccessor().processEvent(textPane, e);
}
+ @Override
public void handleJavaMouseEvent( MouseEvent e ) {
super.handleJavaMouseEvent( e );
javaMouseEventHandler.handle( e );
}
+ @Override
void handleJavaInputMethodEvent(InputMethodEvent e) {
if (jtext != null)
jtext.processInputMethodEventPublic((InputMethodEvent)e);
@@ -360,13 +348,15 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
/**
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public void select(int s, int e) {
- jtext.select(s,e);
+ jtext.select(s, e);
// Fixed 5100806
// We must take care that Swing components repainted correctly
jtext.repaint();
}
+ @Override
public void setBackground(Color c) {
super.setBackground(c);
// synchronized (getStateLock()) {
@@ -379,6 +369,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
// repaintText();
}
+ @Override
public void setForeground(Color c) {
super.setForeground(c);
// synchronized (getStateLock()) {
@@ -392,6 +383,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
// repaintText();
}
+ @Override
public void setFont(Font f) {
super.setFont(f);
// synchronized (getStateLock()) {
@@ -403,12 +395,11 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
textPane.validate();
}
-
/**
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public void setEditable(boolean editable) {
- this.editable = editable;
if (jtext != null) jtext.setEditable(editable);
repaintText();
}
@@ -416,6 +407,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
/**
* @see java.awt.peer.ComponentPeer
*/
+ @Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
if (jtext != null) {
@@ -427,6 +419,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
/**
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public InputMethodRequests getInputMethodRequests() {
if (jtext != null) return jtext.getInputMethodRequests();
else return null;
@@ -435,6 +428,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
/**
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public int getSelectionStart() {
return jtext.getSelectionStart();
}
@@ -442,6 +436,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
/**
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public int getSelectionEnd() {
return jtext.getSelectionEnd();
}
@@ -449,6 +444,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
/**
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public String getText() {
return jtext.getText();
}
@@ -456,12 +452,13 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
/**
* @see java.awt.peer.TextComponentPeer
*/
- public void setText(String txt) {
- setTextImpl(txt);
+ @Override
+ public void setText(String text) {
+ setTextImpl(text);
repaintText();
}
- protected boolean setTextImpl(String txt) {
+ private void setTextImpl(String txt) {
if (jtext != null) {
// JTextArea.setText() posts two different events (remove & insert).
// Since we make no differences between text events,
@@ -474,13 +471,13 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
jtext.getDocument().addDocumentListener(jtext);
}
- return true;
}
/**
* insert the text "txt on position "pos" in the array lines
* @see java.awt.peer.TextAreaPeer
*/
+ @Override
public void insert(String txt, int p) {
if (jtext != null) {
boolean doScroll = (p >= jtext.getDocument().getLength() && jtext.getDocument().getLength() != 0);
@@ -499,6 +496,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
* replace the text between the position "s" and "e" with "txt"
* @see java.awt.peer.TextAreaPeer
*/
+ @Override
public void replaceRange(String txt, int s, int e) {
if (jtext != null) {
// JTextArea.replaceRange() posts two different events.
@@ -516,6 +514,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
* to be implemented.
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public void setCaretPosition(int position) {
jtext.setCaretPosition(position);
}
@@ -524,54 +523,19 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
* to be implemented.
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public int getCaretPosition() {
return jtext.getCaretPosition();
}
- /**
- * DEPRECATED
- * @see java.awt.peer.TextAreaPeer
- */
- public void insertText(String txt, int pos) {
- insert(txt, pos);
- }
-
- /**
- * DEPRECATED
- * @see java.awt.peer.TextAreaPeer
- */
- public void replaceText(String txt, int start, int end) {
- replaceRange(txt, start, end);
- }
-
- /**
- * DEPRECATED
- * @see java.awt.peer.TextAreaPeer
- */
- public Dimension minimumSize(int rows, int cols) {
- return getMinimumSize(rows, cols);
- }
-
- /**
- * DEPRECATED
- * @see java.awt.peer.TextAreaPeer
- */
- public Dimension preferredSize(int rows, int cols) {
- return getPreferredSize(rows, cols);
- }
-
+ final class AWTTextAreaUI extends MotifTextAreaUI {
- class AWTTextAreaUI extends MotifTextAreaUI {
- /**
- * Creates a UI for a JTextArea.
- *
- * @param c the text field
- * @return the UI
- */
- JTextArea jta;
+ private JTextArea jta;
+ @Override
protected String getPropertyPrefix() { return "TextArea"; }
+ @Override
public void installUI(JComponent c) {
super.installUI(c);
@@ -627,6 +591,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ @Override
protected void installKeyboardActions() {
super.installKeyboardActions();
@@ -644,13 +609,15 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ @Override
protected Caret createCaret() {
return new XAWTCaret();
}
}
- static class XAWTCaret extends DefaultCaret {
+ static final class XAWTCaret extends DefaultCaret {
+ @Override
public void focusGained(FocusEvent e) {
super.focusGained(e);
if (getComponent().isEnabled()){
@@ -660,6 +627,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
getComponent().repaint();
}
+ @Override
public void focusLost(FocusEvent e) {
super.focusLost(e);
getComponent().repaint();
@@ -668,6 +636,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
// Fix for 5100950: textarea.getSelectedText() returns the de-selected text, on XToolkit
// Restoring Motif behaviour
// If the text is unhighlighted then we should sets the selection range to zero
+ @Override
public void setSelectionVisible(boolean vis) {
if (vis){
super.setSelectionVisible(vis);
@@ -678,16 +647,14 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ final class XAWTScrollBarButton extends BasicArrowButton {
- class XAWTScrollBarButton extends BasicArrowButton
- {
- UIDefaults uidefaults = XToolkit.getUIDefaults();
+ private UIDefaults uidefaults = XToolkit.getUIDefaults();
private Color darkShadow = SystemColor.controlShadow;
private Color lightShadow = SystemColor.controlLtHighlight;
private Color buttonBack = uidefaults.getColor("ScrollBar.track");
- public XAWTScrollBarButton(int direction)
- {
+ XAWTScrollBarButton(int direction) {
super(direction);
switch (direction) {
@@ -707,6 +674,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
setForeground(uidefaults.getColor("ScrollBar.foreground"));
}
+ @Override
public Dimension getPreferredSize() {
switch (direction) {
case NORTH:
@@ -719,18 +687,22 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ @Override
public Dimension getMinimumSize() {
return getPreferredSize();
}
+ @Override
public Dimension getMaximumSize() {
return getPreferredSize();
}
+ @Override
public boolean isFocusTraversable() {
return false;
}
+ @Override
public void paint(Graphics g)
{
int w = getWidth();
@@ -846,19 +818,16 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ final class XAWTScrollBarUI extends BasicScrollBarUI {
- class XAWTScrollBarUI extends BasicScrollBarUI
- {
- public XAWTScrollBarUI() {
- super();
- }
-
+ @Override
protected void installDefaults()
{
super.installDefaults();
scrollbar.setBorder(new BevelBorder(false,SystemColor.controlDkShadow,SystemColor.controlLtHighlight) );
}
+ @Override
protected void configureScrollBarColors() {
UIDefaults uidefaults = XToolkit.getUIDefaults();
Color bg = scrollbar.getBackground();
@@ -881,12 +850,14 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
+ @Override
protected JButton createDecreaseButton(int orientation) {
JButton b = new XAWTScrollBarButton(orientation);
return b;
}
+ @Override
protected JButton createIncreaseButton(int orientation) {
JButton b = new XAWTScrollBarButton(orientation);
return b;
@@ -900,12 +871,14 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
return incrButton;
}
+ @Override
public void paint(Graphics g, JComponent c) {
paintTrack(g, c, getTrackBounds());
Rectangle thumbBounds = getThumbBounds();
paintThumb(g, c, thumbBounds);
}
+ @Override
public void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds)
{
if(!scrollbar.isEnabled()) {
@@ -934,17 +907,18 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ final class AWTTextArea extends JTextArea implements DocumentListener {
- class AWTTextArea extends JTextArea implements DocumentListener {
- boolean isFocused = false;
- XTextAreaPeer peer;
+ private boolean isFocused = false;
+ private final XTextAreaPeer peer;
- public AWTTextArea(String text, XTextAreaPeer peer) {
+ AWTTextArea(String text, XTextAreaPeer peer) {
super(text);
setFocusable(false);
this.peer = peer;
}
+ @Override
public void insertUpdate(DocumentEvent e) {
if (peer != null) {
peer.postEvent(new TextEvent(peer.target,
@@ -952,6 +926,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ @Override
public void removeUpdate(DocumentEvent e) {
if (peer != null) {
peer.postEvent(new TextEvent(peer.target,
@@ -959,6 +934,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ @Override
public void changedUpdate(DocumentEvent e) {
if (peer != null) {
peer.postEvent(new TextEvent(peer.target,
@@ -979,6 +955,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
super.processFocusEvent(fe);
}
+ @Override
public boolean hasFocus() {
return isFocused;
}
@@ -999,6 +976,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
processInputMethodEvent(e);
}
+ @Override
public void updateUI() {
ComponentUI ui = new AWTTextAreaUI();
setUI(ui);
@@ -1006,6 +984,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
// Fix for 4915454 - override the default implementation to avoid
// loading SystemFlavorMap and associated classes.
+ @Override
public void setTransferHandler(TransferHandler newHandler) {
TransferHandler oldHandler = (TransferHandler)
getClientProperty(AWTAccessor.getClientPropertyKeyAccessor()
@@ -1018,9 +997,8 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ final class XAWTScrollPaneUI extends BasicScrollPaneUI {
- class XAWTScrollPaneUI extends BasicScrollPaneUI
- {
private final Border vsbMarginBorderR = new EmptyBorder(0, 2, 0, 0);
private final Border vsbMarginBorderL = new EmptyBorder(0, 0, 0, 2);
private final Border hsbMarginBorder = new EmptyBorder(2, 0, 0, 0);
@@ -1030,12 +1008,14 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
private PropertyChangeListener propertyChangeHandler;
+ @Override
protected void installListeners(JScrollPane scrollPane) {
super.installListeners(scrollPane);
propertyChangeHandler = createPropertyChangeHandler();
scrollPane.addPropertyChangeListener(propertyChangeHandler);
}
+ @Override
public void paint(Graphics g, JComponent c) {
Border vpBorder = scrollpane.getViewportBorder();
if (vpBorder != null) {
@@ -1051,6 +1031,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
private PropertyChangeListener createPropertyChangeHandler() {
return new PropertyChangeListener() {
+ @Override
public void propertyChange(PropertyChangeEvent e) {
String propertyName = e.getPropertyName();
@@ -1075,7 +1056,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
return c.getComponentOrientation().isLeftToRight();
}
-
+ @Override
protected void installDefaults(JScrollPane scrollpane) {
Border b = scrollpane.getBorder();
UIDefaults uidefaults = XToolkit.getUIDefaults();
@@ -1102,6 +1083,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ @Override
protected void uninstallDefaults(JScrollPane c) {
super.uninstallDefaults(c);
@@ -1123,15 +1105,15 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
-
private class AWTTextPane extends JScrollPane implements FocusListener {
- JTextArea jtext;
- XWindow xwin;
- Color control = SystemColor.control;
- Color focus = SystemColor.activeCaptionBorder;
+ private final JTextArea jtext;
+ private final XWindow xwin;
+
+ private final Color control = SystemColor.control;
+ private final Color focus = SystemColor.activeCaptionBorder;
- public AWTTextPane(JTextArea jt, XWindow xwin, Container parent) {
+ AWTTextPane(JTextArea jt, XWindow xwin, Container parent) {
super(jt);
this.xwin = xwin;
setDoubleBuffered(true);
@@ -1156,6 +1138,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
}
}
+ @Override
public void focusGained(FocusEvent e) {
Graphics g = getGraphics();
Rectangle r = getViewportBorderBounds();
@@ -1164,6 +1147,7 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
g.dispose();
}
+ @Override
public void focusLost(FocusEvent e) {
Graphics g = getGraphics();
Rectangle r = getViewportBorderBounds();
@@ -1176,19 +1160,23 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
return (Window) xwin.target;
}
+ @Override
public ComponentPeer getPeer() {
return (ComponentPeer) (xwin);
}
+ @Override
public void updateUI() {
ComponentUI ui = new XAWTScrollPaneUI();
setUI(ui);
}
+ @Override
public JScrollBar createVerticalScrollBar() {
return new XAWTScrollBar(JScrollBar.VERTICAL);
}
+ @Override
public JScrollBar createHorizontalScrollBar() {
return new XAWTScrollBar(JScrollBar.HORIZONTAL);
}
@@ -1197,18 +1185,19 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
return this.jtext;
}
+ @Override
public Graphics getGraphics() {
return xwin.getGraphics();
}
+ final class XAWTScrollBar extends ScrollBar {
- class XAWTScrollBar extends ScrollBar {
-
- public XAWTScrollBar(int i) {
+ XAWTScrollBar(int i) {
super(i);
setFocusable(false);
}
+ @Override
public void updateUI() {
ComponentUI ui = new XAWTScrollBarUI();
setUI(ui);
@@ -1222,12 +1211,13 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
private Color control = SystemColor.controlShadow;
private boolean isRaised;
- public BevelBorder(boolean isRaised, Color darkShadow, Color lightShadow) {
+ BevelBorder(boolean isRaised, Color darkShadow, Color lightShadow) {
this.isRaised = isRaised;
this.darkShadow = darkShadow;
this.lightShadow = lightShadow;
}
+ @Override
public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) {
g.setColor((isRaised) ? lightShadow : darkShadow);
g.drawLine(x, y, x+w-1, y); // top
@@ -1246,10 +1236,12 @@ class XTextAreaPeer extends XComponentPeer implements TextAreaPeer {
g.drawLine(x+w-2, y+h-2, x+w-2, y+1); // right
}
+ @Override
public Insets getBorderInsets(Component c) {
return getBorderInsets(c, new Insets(0,0,0,0));
}
+ @Override
public Insets getBorderInsets(Component c, Insets insets) {
insets.top = insets.left = insets.bottom = insets.right = 2;
return insets;
diff --git a/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java b/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java
index be948e2a70..3db7ed4ef9 100644
--- a/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java
+++ b/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -57,51 +57,47 @@ import sun.util.logging.PlatformLogger;
import sun.awt.CausedFocusEvent;
import sun.awt.AWTAccessor;
-public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
+final class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.X11.XTextField");
- String text;
- XAWTTextField xtext;
+ private String text;
+ private final XAWTTextField xtext;
+ private final boolean firstChangeSkipped;
- boolean firstChangeSkipped;
-
- public XTextFieldPeer(TextField target) {
+ XTextFieldPeer(TextField target) {
super(target);
- int start, end;
- firstChangeSkipped = false;
text = target.getText();
xtext = new XAWTTextField(text,this, target.getParent());
xtext.getDocument().addDocumentListener(xtext);
xtext.setCursor(target.getCursor());
XToolkit.specialPeerMap.put(xtext,this);
- TextField txt = (TextField) target;
initTextField();
- setText(txt.getText());
- if (txt.echoCharIsSet()) {
- setEchoChar(txt.getEchoChar());
+ setText(target.getText());
+ if (target.echoCharIsSet()) {
+ setEchoChar(target.getEchoChar());
}
else setEchoChar((char)0);
- start = txt.getSelectionStart();
- end = txt.getSelectionEnd();
-
- if (end > start) {
- select(start, end);
- }
+ int start = target.getSelectionStart();
+ int end = target.getSelectionEnd();
// Fix for 5100200
// Restoring Motif behaviour
// Since the end position of the selected text can be greater then the length of the text,
// so we should set caret to max position of the text
- int caretPosition = Math.min(end, text.length());
- setCaretPosition(caretPosition);
+ setCaretPosition(Math.min(end, text.length()));
+ if (end > start) {
+ // Should be called after setText() and setCaretPosition()
+ select(start, end);
+ }
- setEditable(txt.isEditable());
+ setEditable(target.isEditable());
// After this line we should not change the component's text
firstChangeSkipped = true;
}
+ @Override
public void dispose() {
XToolkit.specialPeerMap.remove(xtext);
// visible caret has a timer thread which must be stopped
@@ -141,10 +137,10 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
setFont(font);
}
-
/**
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public void setEditable(boolean editable) {
if (xtext != null) {
xtext.setEditable(editable);
@@ -155,6 +151,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
/**
* @see java.awt.peer.ComponentPeer
*/
+ @Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
if (xtext != null) {
@@ -166,22 +163,23 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
/**
* @see java.awt.peer.TextComponentPeer
*/
-
+ @Override
public InputMethodRequests getInputMethodRequests() {
if (xtext != null) return xtext.getInputMethodRequests();
else return null;
}
+ @Override
void handleJavaInputMethodEvent(InputMethodEvent e) {
if (xtext != null)
xtext.processInputMethodEventImpl(e);
}
-
/**
* @see java.awt.peer.TextFieldPeer
*/
+ @Override
public void setEchoChar(char c) {
if (xtext != null) {
xtext.setEchoChar(c);
@@ -193,6 +191,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
/**
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public int getSelectionStart() {
return xtext.getSelectionStart();
}
@@ -200,6 +199,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
/**
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public int getSelectionEnd() {
return xtext.getSelectionEnd();
}
@@ -207,6 +207,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
/**
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public String getText() {
return xtext.getText();
}
@@ -214,12 +215,13 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
/**
* @see java.awt.peer.TextComponentPeer
*/
- public void setText(String txt) {
- setXAWTTextField(txt);
+ @Override
+ public void setText(String text) {
+ setXAWTTextField(text);
repaint();
}
- protected boolean setXAWTTextField(String txt) {
+ private void setXAWTTextField(String txt) {
text = txt;
if (xtext != null) {
// JTextField.setText() posts two different events (remove & insert).
@@ -234,29 +236,22 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
xtext.getDocument().addDocumentListener(xtext);
xtext.setCaretPosition(0);
}
- return true;
}
/**
* to be implemented.
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public void setCaretPosition(int position) {
if (xtext != null) xtext.setCaretPosition(position);
}
- /**
- * DEPRECATED
- * @see java.awt.peer.TextFieldPeer
- */
- public void setEchoCharacter(char c) {
- setEchoChar(c);
- }
-
void repaintText() {
xtext.repaintNow();
}
+ @Override
public void setBackground(Color c) {
if (log.isLoggable(PlatformLogger.Level.FINE)) {
log.fine("target="+ target + ", old=" + background + ", new=" + c);
@@ -269,6 +264,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
repaintText();
}
+ @Override
public void setForeground(Color c) {
foreground = c;
if (xtext != null) {
@@ -279,6 +275,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
repaintText();
}
+ @Override
public void setFont(Font f) {
synchronized (getStateLock()) {
font = f;
@@ -290,14 +287,6 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
/**
- * DEPRECATED
- * @see java.awt.peer.TextFieldPeer
- */
- public Dimension preferredSize(int cols) {
- return getPreferredSize(cols);
- }
-
- /**
* Deselects the the highlighted text.
*/
public void deselect() {
@@ -308,20 +297,19 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
}
-
/**
* to be implemented.
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public int getCaretPosition() {
return xtext.getCaretPosition();
}
-
-
/**
* @see java.awt.peer.TextComponentPeer
*/
+ @Override
public void select(int s, int e) {
xtext.select(s,e);
// Fixed 5100806
@@ -329,29 +317,32 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
xtext.repaint();
}
-
+ @Override
public Dimension getMinimumSize() {
return xtext.getMinimumSize();
}
+ @Override
public Dimension getPreferredSize() {
return xtext.getPreferredSize();
}
+ @Override
public Dimension getPreferredSize(int cols) {
return getMinimumSize(cols);
}
private static final int PADDING = 16;
+ @Override
public Dimension getMinimumSize(int cols) {
Font f = xtext.getFont();
FontMetrics fm = xtext.getFontMetrics(f);
return new Dimension(fm.charWidth('0') * cols + 10,
fm.getMaxDescent() + fm.getMaxAscent() + PADDING);
-
}
+ @Override
public boolean isFocusable() {
return true;
}
@@ -364,11 +355,10 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
modifiers));
}
-
protected void disposeImpl() {
}
-
+ @Override
public void repaint() {
if (xtext != null) xtext.repaint();
}
@@ -377,27 +367,32 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
if (xtext != null) xtext.paint(g);
}
+ @Override
public void print(Graphics g) {
if (xtext != null) {
xtext.print(g);
}
}
+ @Override
public void focusLost(FocusEvent e) {
super.focusLost(e);
xtext.forwardFocusLost(e);
}
+ @Override
public void focusGained(FocusEvent e) {
super.focusGained(e);
xtext.forwardFocusGained(e);
}
+ @Override
void handleJavaKeyEvent(KeyEvent e) {
AWTAccessor.getComponentAccessor().processEvent(xtext,e);
}
+ @Override
public void handleJavaMouseEvent( MouseEvent mouseEvent ) {
super.handleJavaMouseEvent(mouseEvent);
if (xtext != null) {
@@ -410,26 +405,21 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
}
-
/**
* DEPRECATED
*/
+ @Override
public Dimension minimumSize() {
return getMinimumSize();
}
- /**
- * DEPRECATED
- */
- public Dimension minimumSize(int cols) {
- return getMinimumSize(cols);
- }
-
+ @Override
public void setVisible(boolean b) {
super.setVisible(b);
if (xtext != null) xtext.setVisible(b);
}
+ @Override
public void setBounds(int x, int y, int width, int height, int op) {
super.setBounds(x, y, width, height, op);
if (xtext != null) {
@@ -456,47 +446,11 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
}
+ final class AWTTextFieldUI extends MotifPasswordFieldUI {
- //
- // Accessibility support
- //
-
- // stub functions: to be fully implemented in a future release
- public int getIndexAtPoint(int x, int y) { return -1; }
- public Rectangle getCharacterBounds(int i) { return null; }
- public long filterEvents(long mask) { return 0; }
-
-
- /* To be fully implemented in a future release
-
- int oldSelectionStart;
- int oldSelectionEnd;
-
- public native int getIndexAtPoint(int x, int y);
- public native Rectangle getCharacterBounds(int i);
- public native long filterEvents(long mask);
-
- /**
- * Handle a change in the text selection endpoints
- * (Note: could be simply a change in the caret location)
- *
- public void selectionValuesChanged(int start, int end) {
- return; // Need to write implemetation of this.
- }
- */
-
-
- class AWTTextFieldUI extends MotifPasswordFieldUI {
-
- /**
- * Creates a UI for a JTextField.
- *
- * @param c the text field
- * @return the UI
- */
- JTextField jtf;
-
+ private JTextField jtf;
+ @Override
protected String getPropertyPrefix() {
JTextComponent comp = getComponent();
if (comp instanceof JPasswordField && ((JPasswordField)comp).echoCharIsSet()) {
@@ -506,6 +460,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
}
+ @Override
public void installUI(JComponent c) {
super.installUI(c);
@@ -562,6 +517,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
}
+ @Override
protected void installKeyboardActions() {
super.installKeyboardActions();
@@ -579,21 +535,19 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
}
+ @Override
protected Caret createCaret() {
return new XTextAreaPeer.XAWTCaret();
}
}
- class XAWTTextField extends JPasswordField
- implements ActionListener,
- DocumentListener
- {
-
- boolean isFocused = false;
+ final class XAWTTextField extends JPasswordField
+ implements ActionListener, DocumentListener {
- XComponentPeer peer;
+ private boolean isFocused = false;
+ private final XComponentPeer peer;
- public XAWTTextField(String text, XComponentPeer peer, Container parent) {
+ XAWTTextField(String text, XComponentPeer peer, Container parent) {
super(text);
this.peer = peer;
setDoubleBuffered(true);
@@ -608,6 +562,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
+ @Override
public void actionPerformed( ActionEvent actionEvent ) {
peer.postEvent(new ActionEvent(peer.target,
ActionEvent.ACTION_PERFORMED,
@@ -617,6 +572,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
+ @Override
public void insertUpdate(DocumentEvent e) {
if (peer != null) {
peer.postEvent(new TextEvent(peer.target,
@@ -624,6 +580,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
}
+ @Override
public void removeUpdate(DocumentEvent e) {
if (peer != null) {
peer.postEvent(new TextEvent(peer.target,
@@ -631,6 +588,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
}
+ @Override
public void changedUpdate(DocumentEvent e) {
if (peer != null) {
peer.postEvent(new TextEvent(peer.target,
@@ -638,33 +596,32 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
}
+ @Override
public ComponentPeer getPeer() {
return (ComponentPeer) peer;
}
-
public void repaintNow() {
paintImmediately(getBounds());
}
+ @Override
public Graphics getGraphics() {
return peer.getGraphics();
}
+ @Override
public void updateUI() {
ComponentUI ui = new AWTTextFieldUI();
setUI(ui);
}
-
void forwardFocusGained( FocusEvent e) {
isFocused = true;
FocusEvent fe = CausedFocusEvent.retarget(e, this);
super.processFocusEvent(fe);
-
}
-
void forwardFocusLost( FocusEvent e) {
isFocused = false;
FocusEvent fe = CausedFocusEvent.retarget(e, this);
@@ -672,11 +629,11 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
}
+ @Override
public boolean hasFocus() {
return isFocused;
}
-
public void processInputMethodEventImpl(InputMethodEvent e) {
processInputMethodEvent(e);
}
@@ -691,6 +648,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
// Fix for 4915454 - override the default implementation to avoid
// loading SystemFlavorMap and associated classes.
+ @Override
public void setTransferHandler(TransferHandler newHandler) {
TransferHandler oldHandler = (TransferHandler)
getClientProperty(AWTAccessor.getClientPropertyKeyAccessor()
@@ -702,6 +660,7 @@ public class XTextFieldPeer extends XComponentPeer implements TextFieldPeer {
firePropertyChange("transferHandler", oldHandler, newHandler);
}
+ @Override
public void setEchoChar(char c) {
super.setEchoChar(c);
((AWTTextFieldUI)ui).installKeyboardActions();
diff --git a/src/solaris/classes/sun/awt/X11/XToolkit.java b/src/solaris/classes/sun/awt/X11/XToolkit.java
index 7fa438f448..9f9a15ddee 100644
--- a/src/solaris/classes/sun/awt/X11/XToolkit.java
+++ b/src/solaris/classes/sun/awt/X11/XToolkit.java
@@ -240,9 +240,14 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
@Override
public void dispatchEvent(XEvent ev) {
if (ev.get_type() == XConstants.ConfigureNotify) {
- ((X11GraphicsEnvironment)GraphicsEnvironment.
- getLocalGraphicsEnvironment()).
- displayChanged();
+ awtUnlock();
+ try {
+ ((X11GraphicsEnvironment)GraphicsEnvironment.
+ getLocalGraphicsEnvironment()).
+ displayChanged();
+ } finally {
+ awtLock();
+ }
}
}
});
diff --git a/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java b/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java
index 47449f25c9..60846b69c1 100644
--- a/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java
+++ b/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java
@@ -25,8 +25,8 @@
package sun.awt;
+import java.awt.AWTError;
import java.awt.GraphicsDevice;
-
import java.awt.Point;
import java.awt.Rectangle;
import java.io.BufferedReader;
@@ -205,7 +205,12 @@ public class X11GraphicsEnvironment
* Returns the default screen graphics device.
*/
public GraphicsDevice getDefaultScreenDevice() {
- return getScreenDevices()[getDefaultScreenNum()];
+ GraphicsDevice[] screens = getScreenDevices();
+ if (screens.length == 0) {
+ throw new AWTError("no screen devices");
+ }
+ int index = getDefaultScreenNum();
+ return screens[0 < index && index < screens.length ? index : 0];
}
public boolean isDisplayLocal() {