diff options
Diffstat (limited to 'src/solaris/classes')
-rw-r--r-- | src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java | 9 | ||||
-rw-r--r-- | src/solaris/classes/sun/awt/X11/XComponentPeer.java | 8 | ||||
-rw-r--r-- | src/solaris/classes/sun/awt/X11/XSelection.java | 4 | ||||
-rw-r--r-- | src/solaris/classes/sun/awt/X11/XTextAreaPeer.java | 238 | ||||
-rw-r--r-- | src/solaris/classes/sun/awt/X11/XTextFieldPeer.java | 183 | ||||
-rw-r--r-- | src/solaris/classes/sun/awt/X11/XToolkit.java | 11 | ||||
-rw-r--r-- | src/solaris/classes/sun/awt/X11GraphicsEnvironment.java | 9 |
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() { |