[multiple changes]

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicTextAreaUI.java
	(create): New method.
	* javax/swing/text/DefaultHighlighter.java
	(DefaultHighlightPainter.debugRect): Removed.
	* javax/swing/text/StyleContext.java
	(DEFAULT_STYLE): New field.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicLookAndFeel.java
	(initComponentDefaults): Add keybindings for selection.backward and
	selection-forward for text components.
	* javax/swing/plaf/basic/BasicTextUI.java
	(paintSafely): Paint highlight only when something is actually
	selected.
	* javax/swing/text/DefaultCaret.java
	(handleHighlight): New method.
	(setSelectionVisible): Don't do anything when nothing changes.
	Handle highlight.
	(moveDot): Reimplemented. Handle highlight.
	(setDot): Set mark too. Handle highlight.
	(getSelectionPainter): New method.
	* javax/swing/text/DefaultEditorKit.java
	(defaultActions): Added new actions for text selection.
	* javax/swing/text/DefaultHighlighter.java
	(DefaultHighlightPainter): New inner class.
	(DefaultPainter): New field.
	(paint): Implemented.
	* javax/swing/text/PlainView.java
	(paint): Don't draw background here again.
	* javax/swing/text/Utilities.java
	(getTabbedTextWidth): Use width of ' ' instead of 'm' for tabsize.
	(drawTabbedText): Likewise.

2004-08-31  Graydon Hoare  <graydon@redhat.com>

	* javax/swing/JComponent.java
	(resetKeyboardActions): Add null checks.

2004-08-31  Graydon Hoare  <graydon@redhat.com>

	* javax/swing/DefaultButtonModel.java:
	Skip group notification when no group is set.

2004-08-31  Graydon Hoare  <graydon@redhat.com>

	* javax/swing/JColorChooser.java:
	Make a couple inner classes static, for jikes.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicTextUI.java
	(RottView.modelToView): New method.
	(UpdateHandler): Renamed from EventHandler.
	(updateHandler): Renamed from eventHandler.
	(modelToView): Implemented.
	* javax/swing/text/AbstractDocument.java
	(BranchElement.getElement): Return null for non-existing indeces.
	(BranchElement.getElementIndex): Return 0 in some corner cases.
	* javax/swing/text/FieldView.java
	(modelToView): New method.
	* javax/swing/text/PlainView.java
	(modelToView): Made public.

2004-08-31  Kim Ho  <kho@redhat.com>

	* Makefile.am: New files.
	* Makefile.in: Regenerate.
	* gcj/Makefile.in: Regenerate.
	* include/Makefile.in: Regenerate.
	* java/awt/Color.java: Fix documentation.
	(RGBtoHSB): Use floats for conversions.
	* javax/swing/ButtonGroup.java: Run Jalopy.
	(setSelected): Reimplement.
	* javax/swing/DefaultButtonModel.java: Run Jalopy.
	(changeState): Let ButtonGroup know that the button
	is changing state.
	* javax/swing/JColorChooser.java: Implement.
	* javax/swing/JLabel.java: Run Jalopy.
	* javax/swing/JSpinner.java: Run Jalopy.
	(setValue): New method.
	* javax/swing/JTabbedPane.java: Run Jalopy.
	(removeTabAt): Call correct remove method.
	* javax/swing/SpinnerNumberModel.java: Run Jalopy.
	(getPreviousValue): Compare minimum value.
	* javax/swing/Timer.java: Run Jalopy.
	(run): Comment out println.
	* javax/swing/ToolTipManager.java:
	(mouseMoved): Get new tooltip text for location.
	* javax/swing/colorchooser/AbstractColorChooserPanel.java:
	Jalopy and Javadoc.
	* javax/swing/colorchooser/ColorChooserComponentFactory.java:
	Implement.
	* javax/swing/colorchooser/DefaultColorSelectionModel.java:
	Run Jalopy.
	(setSelectedColor): Fire ChangeEvent.
	* javax/swing/colorchooser/DefaultHSBChooserPanel.java:
	New file. Implement.
	* javax/swing/colorchooser/DefaultPreviewPanel.java:
	Ditto.
	* javax/swing/colorchooser/DefaultRGBChooserPanel.java:
	Ditto.
	* javax/swing/colorchooser/DefaultSwatchChooserPanel.java:
	Ditto.
	* javax/swing/plaf/basic/BasicArrowButton.java:
	(getArrow): Fix size of upward pointing button.
	* javax/swing/plaf/basic/BasicColorChooserUI.java:
	Implement.
	* javax/swing/plaf/basic/BasicSliderUI.java:
	(getWidthOfWidestLabel): Use preferred dimensions.
	(getHeightOfTallestLabel): Ditto.
	* javax/swing/plaf/basic/BasicSpinnerUI.java:
	Run Jalopy.
	(mousePressed): Disable changes to spinner if it is not enabled.
	* testsuite/Makefile.in: Regenerate.


2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicTableHeaderUI.java,
	javax/swing/plaf/basic/BasicTableUI.java:
	Added copyright notice.

2004-08-31  Olga Rodimina  <rodimina@redhat.com>

	* Makefile.am: Added new files.
	* Makefile.in: Regenerate.
	* javax/swing/ComboBoxEditor.java: Added javadocs.
	* javax/swing/ComboBoxModel.java: Likewise.
	* javax/swing/DefaultComboBoxModel.java: Implemented.
	* javax/swing/DefaultListCellRenderer.java: Added javadocs
	and ran through jalopy to fix formatting style.
	(getListCellRendererComponent): Use appropriate border
	if renderer has focus and use noFocusBorder when it doesn't.
	* javax/swing/JComboBox.java: Implemented.
	* javax/swing/JList.java:
	(locationToIndex): New Method. Implemented.
	(indexToLocation): New Method.
	* javax/swing/JPopupMenu.java:
	(visible): New field.
	(isVisible): Changed to use new field above.
	(setVisible): Likewise.
	* javax/swing/MutableComboBoxModel.java: Added javadocs.
	* javax/swing/plaf/basic/BasicArrowButton.java:
	(shadow): Changed default color to Color.gray.
	* javax/swing/plaf/basic/BasicComboBoxUI.java: New File.
	UI delegate for JComboBox.
	* javax/swing/plaf/basic/BasicComboPopup.java: New File.
	Popup menu containing list of JComboBox's items.
	* javax/swing/plaf/basic/BasicComboBoxEditor.java: New File.
	* javax/swing/plaf/basic/BasicComboBoxRenderer.java: New File.
	* javax/swing/plaf/basic/BasicComboBoxUI.java: New File.
	* javax/swing/plaf/basic/BasicComboPopup.java: New File.
	* javax/swing/plaf/basic/BasicPopupMenuUI.java:
	(popupMenuWillBecomeVisible): Set selected path to the first
	element only if it is of type MenuElement. Also fix formatting
	style.
	* javax/swing/plaf/basic/ComboPopup.java: Added javadocs and missing
	methods signatures.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/text/AbstractDocument.java
	(createBranchElement): Use new constructor of BranchElement.
	(createLeafElement): Renamed arguments.
	(getRootElements): Implemented.
	(BranchElement.start): Removed.
	(BranchElement.end): Likewise.
	(BranchElement.BranchElement): Fixed arguments.
	(BranchElement.getEndOffset): Reimplemented.
	(BranchElement.getStartOffset): Likewis.
	* javax/swing/text/DefaultCaret.java
	(paint): Draw simple vertical line as caret instead of a rectangle.
	* javax/swing/text/JTextComponent.java
	(setText): Use doc directly.
	* javax/swing/text/PlainView.java
	(nextTabStop): Implemented.
	* javax/swing/text/Utilities.java
	(drawTabbedText): nextTabStop() returns an absolute x position.
	(getTabbedTextWidth): Likewise.

2004-08-31  Graydon Hoare  <graydon@redhat.com>

	* java/awt/Component.java
	(isFocusTraversable): Predicate on isLightweight()
	(setFocusable): Set isFocusTraversableOverridden.
	(requestFocus): Predicate peer dispatch on !isLightweight()
	(requestFocusInWindow): Likewise.
	(dispatchEventImpl): Coordinate with KeyboardFocusManager.
	* java/awt/Container.java
	(dispatchEventImpl): Predicate on event mask.
	(LightweightDispatcher): Remove focus machinery.
	* java/awt/DefaultFocusTraversalPolicy.java
	(accept): Expand predicate to include isFocusable().
	* java/awt/DefaultKeyboardFocusManager.java:
	Globally change c.dispatchEvent(e) to redispatchEvent(c,e)
	* java/awt/KeyboardFocusManager.java
	(redispatchEvent): Synchronize on event to prevent feedback.
	* javax/swing/AbstractButton.java
	(ButtonFocusListener): Remove class.
	(init): Set focusPainted, focusable.
	* javax/swing/ActionMap.java (get): Check parent for null.
	* javax/swing/InputMap.java (get): Likewise.
	* javax/swing/JComponent.java
	(inputMap_whenFocused): New InputMap.
	(inputMap_whenAncestorOfFocused): Likewise.
	(inputMap_whenInFocusedWindow): Likewise.
	(getActionForKeyStroke): Rewrite.
	(getConditionForKeystroke): Likewise.
	(ActionListenerProxy): New private class.
	(setInputMap): Implement.
	(getInputMap): Likewise.
	(setActionMap): Likewise.
	(getActionMap): Likewise.
	(processComponentKeyEvent): New empty method.
	(processKeyEvent): Implement.
	(processKeyBinding): Likewise.
	(resetKeyboardActions): Rewrite.
	* javax/swing/KeyStroke.java: Rewrite.
	* javax/swing/SwingUtilities.java
	(notifyAction): Implement.
	(replaceUIActionMap): Likewise.
	(replaceUIInputMap): Likewise.
	* javax/swing/plaf/basic/BasicButtonListener.java
	(focusGained): Implement.
	(focusLost): Repaint if focusPainted().
	(installKeyboardActions): Install pressed / released actions.
	(uninstallKeyboardActions): Implement.
	* javax/swing/plaf/basic/BasicButtonUI.java
	(focusColor): New field.
	(installDefaults): Load focus color, install input map.
	(installKeyboardActions): Implement.
	(uninstallKeyboardActions): Likewise.
	(paintFocus): Rewrite.
	* javax/swing/plaf/basic/BasicLookAndFeel.java
	(Button.focus): New default, midPurple.
	* javax/swing/plaf/basic/BasicTextUI.java
	(kit): Make static.
	(installUI): Get doc from kit, load defaults.
	(getKeymapName): Implement.
	(createKeymap): Likewise.
	(installKeyboardActions): Likewise.
	(getInputMap): Likewise.
	(getActionMap): Likewise.
	(createActionMap): Likewise.
	* javax/swing/text/AbstractDocument.java
	(getStartPosition): Implement.
	(getEndPosition): Likewise.
	* javax/swing/text/DefaultEditorKit.java
	(CopyAction): New class.
	(CutAction): Likewise.
	(DefaultKeyTypedAction): Likewise.
	(InsertBreakAction): Likewise.
	(InsertContentAction): Likewise.
	(InsertTabAction): Likewise.
	(PasteAction): Likewise.
	(defaultActions): New static table.
	(createCaret): Implement.
	(getActions): Likewise.
	* javax/swing/text/JTextComponent.java
	(KeymapWrapper): New private class.
	(KeymapActionMap): Likewise.
	(DefaultKeymap): New class.
	(keymaps): New static table.
	(keymap): New field.
	(getKeymap): Implement.
	(removeKeymap): Likewise.
	(addKeymap): Likewise.
	(setKeymap): Likewise.
	(loadKeymap): Likewise.
	(getActions): Likewise.
	(margin): New field.
	(JTextComponent): Build and install default keymap.
	* javax/swing/text/TextAction.java
	(textAction): Call super properly.
	(getTextComponent): Implement.
	* javax/swing/text/Utilities.java
	(drawTabbedText): Adjust position by ascent.

2004-08-31  David Jee  <djee@redhat.com>

	PR AWT/17156

	* gnu/java/awt/peer/gtk/GtkMenuItemPeer.java
	(setEnabled): Make it a native method.
	* java/awt/DefaultKeyboardFocusManager.java
	(postProcessKeyEvent): Only post event if the menu item
	is active.
	* java/awt/MenuItem.java:
	Private field 'enabled' should be true by default.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c
	(setEnabled): New function.

2004-08-31  David Jee  <djee@redhat.com>

	PR AWT/17059

	* gnu/java/awt/peer/gtk/GtkMenuBarPeer.java
	(nativeSetHelpMenu): New native method declaration.
	(addHelpMenu): Call nativeSetHelpMenu().
	(addMenu): Remove.
	* java/awt/MenuBar.java
	(setHelpMenu): Call addNotify() on the new help menu.
	(add): Call addNotify() on the new menu.
	(addNotify): Set the help menu if one exists.
	* java/awt/peer/MenuBarPeer.java
	(addMenu): Remove.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuBarPeer.c
	(nativeSetHelpMenu): New method.

2004-08-31  Graydon Hoare  <graydon@redhat.com>

	* Makefile.am: Add new files.
	* Makefile.in: Regenerate.
	* javax/swing/Box.java: Fix setting of layout in ctor.
	* javax/swing/JScrollPane.java: Scroll headers as well.
	* javax/swing/JTable.java: Reimplement.
	* javax/swing/JViewPort.java: Only add non-null children.
	* javax/swing/ScrollPaneLayout.java: Correct header calculations.
	* javax/swing/Timer.java: Fix stopping null waker.
	* javax/swing/plaf/basic/BasicTableHeaderUI.java: New file.
	* javax/swing/plaf/basic/BasicTableUI.java: New file.
	* javax/swing/table/DefaultTableCellRenderer.java: Configure.
	* javax/swing/table/DefaultTableColumnModel.java: Flesh out.
	* javax/swing/table/DefaultTableModel.java: Clean up.
	* javax/swing/table/JTableHeader.java: Implement.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* javax/swing/JSpinner.java (getChangeListeners): Remove double
	semi-colon.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkClasspathFontPeerMetrics.c:
	Declare variables at top of functions/block.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c: Likewise.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* java/lang/Rectangle.java (intersects): Check r.width and r.height
	first.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/text/PlainView.java
	(selectedColor): New field.
	(unselectedColor): Likewise.
	(font): Likewise.
	(updateMetrics): New method.
	(lineToRect): Likewise.
	(modelToView): Likewise.
	(drawSelectedText): Use color from JTextComponent ad draw with
	Utilities class.
	(drawUnselectedText): Likewise.
	(paint): Initialize helper fields.
	* javax/swing/text/View.java
	(getChildAllocation): New method.
	(getViewIndex): Likewise.
	(getToolTipText): Likewise.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/text/Utilities.java
	(drawTabbedText): Reimplemented.
	(getTabbedTextWidth): Likewise.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicTextUI.java
	(installDefaults): Install caret and highlighter.
	(modelToView): Use Bias.Forward when calling sibling.
	* javax/swing/text/AbstractDocument.java
	(ElementEdit): Implements DocumentEvent.ElementChange.
	(ElementEdit.ElementEdit): New method.
	(ElementEdit.getChildrenAdded): Likewise.
	(ElementEdit.getChildrenRemoved): Likewise.
	(ElementEdit.getElement): Likewise.
	(ElementEdit.getIndex): Likewise.
	* javax/swing/text/DefaultCaret.java
	(color): Removed.
	(textComponent): Renamed from parent, made private.
	(selectionVisible): Renamed from vis_sel, made private.
	(blinkRate): Renamed from blink, made private.
	(magicCaretPosition): Renamed from magic, made private.
	(visible): Renamed from vis, made private.
	(dot): Made private.
	(mark): Likewise.
	(deinstall): Remove as MouseMotionListener.
	(install): Initialize textComponent first. Add as MouseMotionListener.
	(paint): Reimplemented.
	* javax/swing/text/JTextComponent.java
	(setCaret): Deinstall old caret, install new one and fire property
	change after setting property.
	(setHighlighter): Deinstall old highlighter, install new one and fire
	property change after setting property.
	(setCaretColor): Fire property change after setting property.
	(setDisabledTextColor): Likewise.
	(setSelectedTextColor): Likewise.
	(setSelectionColor): Likewise.
	(modelToView): New method.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/text/AbstractDocument.java
	(getText): Simplified.
	* javax/swing/text/Segment.java
	(current): New field.
	(current): Reimplemented.
	(first): Likewise.
	(getIndex): Likewise.
	(last): Likewise.
	(next): Likewise.
	(previous): Likewise.
	(setIndex): Likewise.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicButtonUI.java
	(defaultTextIconGap): Made protected.
	(defaultTextShiftOffset): Likewise.
	(textShiftOffset): New field.
	(clearTextShiftOffset): New method.
	(getTextShiftOffset): Likewise.
	(setTextShiftOffset): Likewise.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicTextUI.java
	(installUI): Add eventHandler as property listener.
	(uninstallUI): remove eventHandler as propert listener.
	(installDefaults): Added comment.
	(installListeners): Likewise.
	(installKeyboardActions): Likewise.
	(uninstallDefaults): Likewise.
	(uninstallListeners): Likewise.
	(uninstallKeyboardActions): Likewise.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/text/AbstractDocument.java:
	Fixed some typos in comments.
	(insertString): Reimplemented.
	(remove): Likewise.
	(replace): New method.
	(children): Dont use fully qualified class name.
	(DefaultDocumentEvent.offset): Renamed from off.
	(DefaultDocumentEvent.length): Renamed from len.
	(DefaultDocumentEvent.type): New field.
	(DefaultDocumentEvent.DefaultDocumentEvent): New constructor.
	(DefaultDocumentEvent.getType): Implemented.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicTextUI.java
	(RootView.textComponent): Removed.
	(RootView.RootView): Don't initialize textComponent.
	(RootView.getViewFactory): New method.
	(EventHandler): New inner class.
	(rootView): Initialize at instance creation.
	(eventHandler): New field.
	(installUI): Don't create view hierarchy directly,
	call modelChanged() instead.
	(modelChanged): New method.
	* javax/swing/text/JTextComponent.java
	(setDocument): Fire property change event.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicTextUI.java
	(RootView.paint): Removed debug output.
	(paintSafely): Draw highlighter before text.
	(paintBackground): Use background color of text component.
	* javax/swing/plaf/basic/BasicToggleButtonUI.java:
	Reformatted.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicToolBarUI.java
	(BasicToolBarUI): Fixed arguments for constructor.
	(createUI): Fixed creation of object.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/DefaultListSelectionModel.java
	(fireValueChanged): Renamed from fireSelectionValueChanged,
	made protected.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/text/TabSet.java
	(TabSet): Implements java.io.Serializable.
	* javax/swing/text/TabStop.java
	(TabStop): Implements java.io.Serializable.
	(TabStop): Made public.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/JComponent.java
	(setUI): Fire PropertyChange.
	* javax/swing/JLabel.java
	(text): Renamed from labelText.
	(horizontalAlignment): New default vlaue.
	(icon): Renamed from activeIcon.
	(displayedMnemonic): Renamed from mnemonicKey, added default value.
	(displayedMnemonicIndex): Renamed from underlineChar.
	(setDisplayedMnemonic): Reimplemented.
	* javax/swing/JRadioButton.java
	(JRadioButton): New constructors.
	* javax/swing/JTextField.java
	(JTextField): Throw exception if colums < 0, initialitialz
	this.columns directly and initialize document with text conditionally.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicFormattedTextFieldUI.java,
	javax/swing/plaf/basic/BasicPasswordFieldUI.java,
	javax/swing/plaf/basic/BasicTextAreaUI.java: New files.
	* javax/swing/text/FieldView.java
	(paint): Just call super method for now.
	* Makefile.am: Added new files.
	* Makefile.in: Regenerated.

2004-08-31  Ka-Hing Cheung  <kahing@javabsp.org>

	* javax/swing/AbstractSpinnerModel.java,
	javax/swing/JSpinner.java,
	javax/swing/SpinnerNumberModel.java,
	javax/swing/plaf/basic/BasicSpinnerUI.java:
	New files.
	* javax/swing/plaf/basic/BasicLookAndFeel.java
	(initClassDefaults): Added defaults for BasicSpinnerUI.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* Makefile.am: Added new files.
	* Makefile.in: Regenerated.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/TransferHandler.java,
	javax/swing/plaf/basic/ComboPopup.java: New files
	* Makefile.am: Added javax/swing/TransferHandler.java and
	javax/swing/plaf/basic/ComboPopup.java
	* Makefile.in: Regenerated.

2004-08-31  Roman Kennke  <roman@ontographics.com>

	* javax/swing/text/Utilities.java: New file.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* Makefile.am: Added javax/swing/text/Utilities.java.
	* Makefile.in: Regenerated.

2004-08-31  Graydon Hoare  <graydon@redhat.com>

	* javax/swing/text/SimpleAttributeSet.java: New file.
	* javax/swing/text/StyleConstants.java: New file.
	* javax/swing/text/StyleContext.java: New file.
	* javax/swing/text/TabSet.java: New file.
	* javax/swing/text/TabStop.java: New file.
	* javax/swing/text/AbstactDocument.java:
	(AbstractElement): Implement attribute support.
	* javax/swing/text/AttributeSet.java
	(NameAttribute): New static field.
	(ResolveAttribute): New static field.
	* Makefile.am: Update for new files.
	* Makefile.in: Regenerate.

2004-08-31  Craig Black  <craig.black@aonix.com>

	* gnu/java/awt/peer/gtk/GdkGraphics.java
	(drawImage): Add support for scaling pixmaps.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c
	(copyAndScalePixmap): New native method.

2004-08-31  Thomas Fitzsimmons  <fitzsim@redhat.com>

	PR AWT/16121
	* jni/gtk-peer/gthread-jni.c: Include stdio.h.  Eliminate
	type-punning compiler warnings using unions.
	(throw): Replace bzero with memset.

2004-08-31  Andreas Tobler  <a.tobler@schweiz.ch>
	    Thomas Fitzsimmons  <fitzsim@redhat.com>

	* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c: Move
	NSA_PB macros to gtkpeer.h.  Include gtkpeer.h.
	* jni/gtk-peer/gtkpeer.h: Move NSA_PB macros here.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
	(nativeSetIconImageFromDecoder): Use NSA_GET_PB_PTR macro.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c:
	#include gdk.h, not gtk.h. #include jni.h, native_state.h, string.h
	and stdlib.h, not gtkpeer.h.
	(*vm): New static variable.
	(areaPreparedID): Make static.
	(areaUpdatedID): Likewise.
	(area_prepared): Get and use JNIEnv through stored JavaVM *vm.
	(area_prepared): Likewise.
	(area_updated): Likewise.
	(closed): Likewise.
	(initStaticState): Initialize *vm javaVM.
	(pumpBytes): Use given env, not global gdk_env.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* java/awt/geom/CubicCurve2D.java (solveCubic): Removed duplicate
	comments.

2004-08-31  Sven de Marothy  <sven@physto.se>

	* java/awt/geom/CubicCurve2D.java: Reindent.
	(contains): Implemented.
	(intersects): Implemented.
	* java/awt/geom/QuadCurve2D.java: Likewise.
	* java/awt/geom/GeneralPath.java: Reindent and document.
	Fully (re)implemented using separate xpoints and ypoints
	float[] coords.
	* java/awt/geom/RoundRectangle2D.java: Several bugfixes (Bug #6007).

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/JMenuItem.java
	(getMenuDragMouseListeners): New method.
	(getMenuKeyListeners): Likewise.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/AbstractButton.java
	(model): Made protected.
	(actionListener): Likewise.
	(changeListener): Likewise.
	(itemListener): Likewise.
	(multiClickThreshhold): New field.
	(getActionListeners): New method.
	(getChangeListeners): Likewise.
	(getItemListeners): Likewise.
	(fireItemStateChanged): Simplified implementation.
	(fireActionPerformed): Likewise.
	(fireStateChanged): Likewise.
	(getMultiClickThreshhold): New method.
	(setMultiClickThreshhold): Likewise.

2004-08-31  Tom Tromey  <tromey@redhat.com>

	* java/awt/image/Kernel.java (clone): Use super.clone().

2004-08-31  David Jee  <djee@redhat.com>

	PR AWT/16682
	* gnu/java/awt/peer/gtk/GtkFramePeer.java
	(nativeSetIconImage): Rename to nativeSetIconImageFromDecoder.
	(nativeSetIconImageFromData): New native method declaration.
	(setIconImage): Handle images not produced from GdkPixbufDecoder.
	* gnu/java/awt/peer/gtk/GtkImage.java
	(getPixelCache): New method.
	(getColorModel): New method.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
	(nativeSetIconImage): Rename to nativeSetIconImageFromDecoder.
	(free_pixbuf_data): New helper function.
	(nativeSetIconImageFromData): New function.

2004-08-31  Graydon Hoare  <graydon@redhat.com>

	PR SWING/16576
	* javax/swing/JLayeredPane.java
	(setLayer): Permit changing layer after addition.
	(setPosition): Permit over-length positions.
	(layerToRange): Compare intValue()s.
	* javax/swing/Box.java (createHorizontalBox): Implement.
	(createRigidArea): Likewise.
	(createVerticalBox): Likewise.

2004-08-31  Kim Ho  <kho@redhat.com>

	* java/awt/Component.java:
	(processMouseEvent): Consume event after
	listeners process it.
	(processMouseMotionEvent): ditto.
	(processMouseWheelEvent): ditto.
	* java/awt/Container.java:
	(acquireComponentForMouseEvent):
	Do not dispatch to events that have been
	removed from the Container.
	(handleEvent): Consume the MouseEvents.
	* javax/swing/RepaintManager.java:
	(paintDirtyRegions): Do not add to list of
	damaged areas if the component has no root.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/plaf/basic/BasicMenuItemUI.java: Clean ip imports.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* gnu/java/awt/peer/gtk/GtkToolkit.java (getFontPeer): Don't return
	null when a MissingResourceException is thrown. Should never happen.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* java/awt/EventQueue.java (postEvent): Throw NullPointerException
	when argument is null.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
	(Java_gnu_java_awt_peer_gtk_GtkComponentPeer_addExposeFilter):
	Define hid at start of function.
	(Java_gnu_java_awt_peer_gtk_GtkComponentPeer_removeExposeFilter):
	Likewise.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* gnu/java/awt/EmbeddedWindow.java: Reindent.
	* javax/swing/JButton.java: Reindent.
	* javax/swing/JCheckBox.java: Reindent.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* Makefile.am (gtk_c_source_files): Added
	jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c.
	(gtk_awt_peer_sources): Added
	gnu/java/awt/peer/gtk/GThreadMutex.java and
	gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java.
	* Makefile.in: Regenerated.

2004-08-31  Archie Cobbs  <archie@dellroad.org>

	* jni/gtk-peer/gthread-jni.c: don't #include nonexistent files

2004-08-31  Steven Augart  <augart@watson.ibm.com>

	* jni/gtk-peer/gthread-jni.c (c-font-lock-extra-types):
	Added jfieldID, jmethodID.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
	(Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit): Initialize
	gdk_env before calling any gdk or gtk function.

	* gnu/java/awt/peer/gtk/GtkMainThread.java (gtkInitCalled): New field.
	(GtkMainThread): Call wait() in while loop waiting for gtkInitCalled.
	(run): Set gtkInitCalled.

2004-08-31  Steven Augart  <augart@watson.ibm.com>

	* gnu/java/awt/peer/gtk/GtkMainThread.java (run): Pass the value of
	the gnu.classpath.awt.gtk.portable.native.sync system property to C.

	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
	(Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit): New argument,
	portableNativeSync.  Delegate PORTABLE_NATIVE_SYNC work to
	init_glib_threads.
	(init_glib_threads): New function.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* jni/gtk-peer/gthread-jni.c: Define MIN_, MAX_ and NORM_
	PRIORITY when not already defined in header file.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* jni/gtk-peer/gthread-jni.c (setup_cache): Call
	ExceptionOccurred, not ExceptionCheck, when we don't have JNI 1.2.

2004-08-31  Steven Augart  <augart@watson.ibm.com>

	* gnu/native/jni/gtk-peer/gthread-jni.c: Indentation fixes.
	Implemented missing functions for GTK2.
	Added error handling.
	Renamed static functions out of the g_ namespace.
	Added TRACE_API_CALLS, EXPLAIN_TROUBLE, EXPLAIN_BROKEN,
	EXPLAIN_BADLY_BROKEN, and DELETE_LOCAL_REFS options.
	Rewrote global-reference code.
	Eliminated cascading errors.
	(mutex_trylock_jni_impl) Fully implemented.
	(cond_timed_wait_jni_impl) Went from millisecond to microsecond
	resolution.
	(setup_cache) New function.
	(mutex_cond_wait_jni_impl, mutex_cond_timed_wait_jni_impl) Fixed
	bug where they were not unlocking the GMutex associated with the
	condition variable during the wait on that condition variable.

	* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c,
	native/jni/gtk-peer/gthread-jni.c,
	native/jni/gtk-peer/gthread-jni.h
	(g_thread_jni_functions): Renamed to ...
	(portable_native_sync_jni_functions): this name.
	(gdk_vm): Renamed to...
	(the_vm): this name.

	* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c
	(gdk_vm): Removed duplicate definition.
	(gtkInit): Removed stray message to stdout.
	(gtkInit): Use g_malloc and g_free instead of malloc and free.
	(gtkInit): Fix a const assignment bug.
	(gtkInit): Simplified code.

	* gnu/java/awt/peer/gtk/GThreadNativeMethodRunner.java,
	native/jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.c,
	native/jni/gtk-peer/gnu_java_awt_peer_gtk_GThreadNativeMethodRunner.h,
	gnu/java/awt/peer/gtk/GThreadMutex.java:
	New files.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* javax/swing/Box.java: Put FIXME comment above class declaration.
	* javax/swing/JButton.java: Remove illegal L&F HTML from comments.
	* javax/swing/JCheckBox.java: Likewise.
	* javax/swing/JDialog.java: Likewise.
	* javax/swing/JRadioButton.java: Likewise.
	* javax/swing/JToggleButton.java: Likewise.
	* javax/swing/UIManager.java: Likewise.
	* javax/swing/border/TitledBorder.java: Likewise.
	* javax/swing/plaf/basic/BasicLabelUI.java: Likewise.
	* javax/swing/plaf/basic/BasicLookAndFeel.java: Likewise.
	* javax/swing/plaf/basic/BasicPopupMenuSeparatorUI.java: Likewise.
	* javax/swing/plaf/basic/BasicProgressBarUI.java: Likewise.
	* javax/swing/plaf/basic/BasicScrollBarUI.java: Likewise.
	* javax/swing/plaf/basic/BasicSeparatorUI.java: Likewise.
	* javax/swing/text/JTextComponent.java: Likewise.

2004-08-31  David Jee  <djee@redhat.com>

	PR AWT/16682
	* gnu/java/awt/peer/gtk/GtkFramePeer.java
	(setIconImage): Add a FIXME for unhandled cases.

2004-08-31  Thomas Fitzsimmons  <fitzsim@redhat.com>

	PR AWT/16040
	* gnu/awt/LightweightRedirector.java: Call getModifiersEx, not
	getModifiers.  Replace old button masks with new ones.
	* gnu/awt/xlib/XEventLoop.java: Likewise.
	* gnu/java/awt/peer/gtk/GtkButtonPeer.java: Likewise.
	* gnu/java/awt/peer/gtk/GtkComponentPeer.java,
	jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c: Likewise.
	* gnu/java/awt/peer/gtk/GtkListPeer.java: Likewise.
	* gnu/java/awt/peer/gtk/GtkTextFieldPeer.java: Likewise.
	* java/awt/AWTKeyStroke.java: Remove old modifier masks.
	* java/awt/Component.java: Replace old modifier	masks with new
	ones.
	* java/awt/Container.java: Call getModifiersEx, not
	getModifiers.
	* java/awt/DefaultKeyboardFocusManager.java: Likewise.  Remove
	old modifier masks.
	* javax/swing/JMenuItem.java: Replace old button masks with new
	ones.
	* javax/swing/KeyStroke.java: Call getModifiersEx, not
	getModifiers.
	* javax/swing/SwingUtilities.java: Likewise.
	* javax/swing/plaf/basic/BasicButtonListener.java: Likewise.
	* javax/swing/plaf/basic/BasicInternalFrameUI.java: Likewise.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c: Replace old
	mask macros with new ones.
	* jni/gtk-peer/gtkpeer.h: Replace old button and modifier mask
	macros with new ones representing new masks.

2004-08-31  Craig Black  <craig.black@aonix.com>

	* gnu/java/awt/peer/gtk/GdkGraphics.java
	(drawRoundRect): Implemented.
	(fillRoundRect): Implemented.
	* gnu/java/awt/peer/gtk/GdkGraphics2D.java
	(drawRoundRect): Reimplemented to match GdkGraphics.
	(fillRoundRect): Reimplemented to match GdkGraphics.

2004-08-31  Mark Wielaard  <mark@klomp.org>

	* Makefile.in: Regenerated.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* gnu/java/awt/EmbeddedWindow.java
	(addNotify): Use AccessController to allow execution of privileged
	code.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* gnu/java/awt/EmbeddedWindow.java
	(static): Removed.
	(addNotify): Set peer via reflection.
	(setWindowPeer): Removed.
	* gnu/java/awt/natEmbeddedWindow.cc: Removed.
	* Makefile.am (nat_source_files):
	Removed gnu/java/awt/natEmbeddedWindow.cc.

2004-08-31  Bryce McKinlay  <mckinlay@redhat.com>

	* Makefile.am: Add  gnu/java/security/action/GetPropertyAction.java
	and gnu/java/security/action/SetAccessibleAction.java.

2004-08-31  Bryce McKinlay  <mckinlay@redhat.com>

	* gnu/java/security/action/GetPropertyAction.java (setParameters):
	Renamed from 'setName'. New 2-argument form with default value.
	(run): Pass default 'value' parameter to System.getProperty().
	* gnu/java/security/action/SetAccessibleAction.java: Fix javadoc
	typos.

2004-08-31  Bryce McKinlay  <mckinlay@redhat.com>

	* gnu/java/security/action/GetPropertyAction.java: New class.
	* gnu/java/security/action/SetAccessibleAction.java: New class.

2004-08-31  David Jee  <djee@redhat.com>

	* gnu/java/awt/peer/gtk/GtkFramePeer.java
	(setIconImage): Check if image is null.

2004-08-31  David Jee  <djee@redhat.com>

	* gnu/java/awt/peer/gtk/GtkFramePeer.java
	(create): Set the icon image.
	(nativeSetIconImage): New native method declaration.
	(setIconImage): Implement.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
	(nativeSetIconImage): New function.

2004-08-31  Dalibor Topic <robilad@kaffe.org>

	* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c
	(filenameFilterCallback): Declare local variable accepted before use.

2004-08-31  Dalibor Topic <robilad@kaffe.org>

	* gnu/java/awt/ComponentDataBlitOp.java:
	Cleaned up imports.

2004-08-31  Tom Tromey  <tromey@redhat.com>

	* gnu/java/awt/peer/GLightweightPeer.java,
	gnu/java/awt/peer/gtk/GdkGraphics2D.java,
	gnu/java/awt/peer/gtk/GtkComponentPeer.java,
	javax/swing/JScrollPane.java: Removed
	redundant imports.

2004-08-31  David Jee  <djee@redhat.com>

	* java/awt/DefaultKeyboardFocusManager.java
	(postProcessKeyEvent): Only activate MenuShortcuts on KEY_PRESSED
	event.  Fix shift modifier checking.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c
	(accel_attach): Remove.
	(setupAccelGroup): Remove calls to accel_attach.

2004-08-31  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* gnu/java/awt/peer/gtk/GtkArg.java: Remove file.
	* gnu/java/awt/peer/gtk/GtkArgList.java: Remove file.

	* Makefile.am (gtk_awt_peer_sources): Remove GtkArg.java and
	GtkArgList.java.
	(gtk_c_files): Use CAIRO_CFLAGS and PANGOFT2_CFLAGS, not _LIBS.
	* Makefile.in: Regenerate.
	* gnu/java/awt/peer/gtk/GtkButtonPeer.java,
	jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
	(create(String)): New method.
	(create): Call new create method.
	(getArgs): Remove method.
	* gnu/java/awt/peer/gtk/GtkCheckboxPeer.java,
	jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c
	(nativeCreate): Rename to create.
	(gtkSetLabel): Rename to gtkButtonSetLabel.
	(gtkToggleButtonSetActive): New method.
	(create): Call gtkToggleButtonSetActive and gtkButtonSetLabel.
	(setState): Replace set call with gtkToggleButtonSetActive.
	(setLabel): Replace gtkSetLabel call with gtkButtonSetLabel.
	(getArgs): Remove method.
	* gnu/java/awt/peer/gtk/GtkComponentPeer.java,
	jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
	(gtkWidgetSetSensitive): New method.
	(gtkWidgetSetParent): Likewise.
	(GtkComponentPeer): Call setParent, setComponentBounds and
	setVisibleAndEnabled.
	(setParent): New method.
	(setComponentBounds): New method.
	(setVisibleAndEnabled): New method.
	(setEnabled): Call gtkWidgetSetSensitive.
	(getArgs): Remove method.
	Remove all set methods.
	* gnu/java/awt/peer/gtk/GtkDialogPeer.java (create): Call
	gtkWindowSetModal, setTitle and setResizable.
	(getArgs): Remove method.
	* gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
	(setComponentBounds): New method.
	* gnu/java/awt/peer/gtk/GtkFramePeer.java (setResizable):
	Replace set call with gtkWindowSetResizable.
	(getArgs): Remove method.
	(create): Call setTitle and setResizable.
	* gnu/java/awt/peer/gtk/GtkWindowPeer.java,
	jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
	(gtkWindowSetTitle): New method.
	(gtkWindowSetResizable): New method.
	(gtkWindowSetModal): New method.
	(setParent): New method.
	(setVisibleAndEnabled): New method.
	(getArgs): Remove method.
	(setTitle): Call gtkWindowSetTitle.
	(setResizable): Call gtkWindowSetResizable.
	* jni/gtk-peer/gtkpeer.h [DEBUG_LOCKING]: New define to turn on
	and off locking instrumentation.

2004-08-31  Kim Ho  <kho@redhat.com>

	* Makefile.am: Add new file.
	* Makefile.in: Regenerate.
	* gcj/Makefile.in: Regenerate
	* include/Makefile.in:
	* java/awt/Container.java:
	(acquireComponentForMouseEvent): Respect
	the event mask when looking for candidate.
	* javax/swing/JComponent.java:
	Remove toolTip field.
	(createToolTip): Create a tooltip on demand.
	(setToolTipText): Register with the ToolTipManager.
	(getToolTipText(MouseEvent)): Return getToolTipText().
	* javax/swing/JToolTip.java: Implement.
	* javax/swing/Timer.java: Jalopy.
	(restart): Call stop, then start.
	(stop): Interrupt the timer rather than wait for
	the timer to come to a stop naturally.
	* javax/swing/ToolTipManager.java: Implement.
	* javax/swing/plaf/basic/BasicLookAndFeel.java:
	Change ToolTip.background color.
	* javax/swing/plaf/basic/BasicToolTipUI.java:
	Implement.
	* testsuite/Makefile.in: Regenerate

2004-08-31  Jerry Quinn  <jlquinn@optonline.net>

	* java/awt/image/DirectColorModel.java (DirectColorModel): Fix
	constructor param comments.

2004-08-31  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* java/awt/Component.java: Document AWT 1.0 event handler
	methods.

2004-08-31  Roman Kennke  <roman@ontographics.com>

	* javax/swing/Box.java:
	(createGlue): Implemented
	(createHorizontalGlue): Implemented
	(createHorizontalStrut): Implemented
	(createVerticalGlue): Implemented
	(createVerticalStrut): Implemented

2004-08-31  David Jee  <djee@redhat.com>

	* gnu/java/awt/peer/gtk/GtkChoicePeer.java
	(GtkChoicePeer): Do not automatically select first item.
	(getHistory): Remove.
	(nativeGetSelected): New method.
	(nativeRemoveAll): New method.
	(add): Use nativeGetSelected() instead of getHistory().
	(remove): Likewise.
	(removeAll): Call nativeRemoveAll().
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c
	(create): Migrate to GtkComboBox.
	(append): Likewise.
	(nativeAdd): Likewise.
	(nativeRemove): Likewise.
	(select): Likewise.
	(nativeRemoveAll): New method.
	(nativeGetSelected): New method.
	(selection_changed): New method.
	(getHistory): Remove.
	(item_activate): Remove.
	(item_removed): Remove.
	(connect_choice_item_selectable_hook): Remove.

2004-08-31  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* gnu/java/awt/peer/gtk/GtkTextFieldPeer.java (create): Use tf
	variable in setEditable call.

	* gnu/java/awt/peer/gtk/GtkTextFieldPeer.java,
	jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c
	(gtkWidgetSetBackground): New method.
	(gtkWidgetSetForeground): Likewise.
	(create): Set peer's editable state based on awtComponent's.

	* java/awt/Button.java (Button()): Use empty string rather than
	null in no-label constructor.

2004-08-31  Roman Kennke  <roman@ontographics.com>

	* javax/swing/BoxLayout.java: Reimplement.

2004-08-31  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* gnu/java/awt/peer/gtk/GdkGraphics.java,
	gnu_java_awt_peer_gtk_GdkGraphics.c
	(initState(GtkComponentPeer)): Don't return array of colour
	values.
	(GdkGraphics(int,int)): Set default font to size 12.
	(GdkGraphics(GtkComponentPeer)): Set graphics colour to
	component's foreground colour.
	* gnu/java/awt/peer/gtk/GdkGraphics2D.java,
	gnu_java_awt_peer_gtk_GdkGraphics2D.c
	(initState(GtkComponentPeer)): Don't return array of colour
	values.
	(GdkGraphics2D(GtkComponentPeer)): Set foreground and background
	colours to component's colours.
	(current_colors_of_widget): Remove function.
	* gnu/java/awt/peer/gtk/GtkOffScreenImage.java (getGraphics):
	Return a new graphics object.
	* java/awt/Font.java (toString): Fix format.
	* java/awt/Graphics.java (toString): Likewise.

2004-08-31  Craig Black  <craig.black@aonix.com>

	* native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c
	(addTearOff): New function.
	* gnu/java/awt/peer/gtk/GtkMenuPeer.java (addTearOff):
	New native method.
	(init): Call addTearOff() when menu.isTearOff().

2004-08-31  Bryce McKinlay  <mckinlay@redhat.com>

	* gnu/java/awt/ClasspathToolkit.java (createImageProducer): New.
	Default implementation.
	* gnu/java/awt/peer/gtk/GtkToolkit.java (createImageProducer): New.
	Implement using GdkPixbufDecoder.

2004-08-31  David Jee  <djee@redhat.com>

	* gnu/java/awt/peer/gtk/GtkComponentPeer.java
	(GtkComponentPeer): Use gtkWidgetGetPreferredDimensions() for
	setting the size of GtkFileDialogPeers.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
	(gtkWidgetGetPreferredDimensions): For widgets extending GtkWindow,
	use their default sizes rather than their natural requisitions.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/JFormattedTextField.java
	(JFormattedTextField): Implemented.
	* javax/swing/text/DefaultEditorKit.java
	(BeepAction): New inner class.
	* javax/swing/text/Segment.java
	(partialReturn): New field.
	(setPartialReturn): New method.
	(isPartialReturn): Likewise.
	* javax/swing/text/View.java
	(createFragment): Fixed typo.
	(getStartOffset): New method.
	(getEndOffset): Likewise.

2004-08-31  Michael Koch  <konqueror@gmx.de>

	* javax/swing/table/DefaultTableColumnModel.java
	(serialVersionUID): Made private.
	(listenerList): Initialize.
	(changeEvent): Initialize.
	* javax/swing/table/JTableHeader.java
	(JTableHeader): New constructors.
	(createDefaultColumnModel): New method.
	* javax/swing/table/TableColumn.java
	(setHeaderRenderer): Simplified code.
	(setCellRenderer): Likewise.
	(setWidth): Likewise.

From-SVN: r86956
This commit is contained in:
Graydon Hoare
2004-09-02 05:10:34 +00:00
parent 1e8964cf94
commit 5757917258
130 changed files with 15538 additions and 5876 deletions
+4 -4
View File
@@ -409,13 +409,13 @@ public class AWTKeyStroke implements Serializable
{
token = t.nextToken();
if ("shift".equals(token))
modifiers |= KeyEvent.SHIFT_MASK | KeyEvent.SHIFT_DOWN_MASK;
modifiers |= KeyEvent.SHIFT_DOWN_MASK;
else if ("ctrl".equals(token) || "control".equals(token))
modifiers |= KeyEvent.CTRL_MASK | KeyEvent.CTRL_DOWN_MASK;
modifiers |= KeyEvent.CTRL_DOWN_MASK;
else if ("meta".equals(token))
modifiers |= KeyEvent.META_MASK | KeyEvent.META_DOWN_MASK;
modifiers |= KeyEvent.META_DOWN_MASK;
else if ("alt".equals(token))
modifiers |= KeyEvent.ALT_MASK | KeyEvent.ALT_DOWN_MASK;
modifiers |= KeyEvent.ALT_DOWN_MASK;
else if ("button1".equals(token))
modifiers |= KeyEvent.BUTTON1_DOWN_MASK;
else if ("button2".equals(token))
+1 -1
View File
@@ -101,7 +101,7 @@ private transient ActionListener action_listeners;
public
Button()
{
this(null);
this("");
}
/*************************************************************************/
+3 -3
View File
@@ -506,7 +506,7 @@ public class Color implements Paint, Serializable
/**
* Returns the RGB value for this color, in the sRGB color space. The blue
* value will be in bits 0-7, green in 8-15, red in 6-23, and alpha value in
* value will be in bits 0-7, green in 8-15, red in 16-23, and alpha value in
* 24-31.
*
* @return the RGB value for this color
@@ -772,9 +772,9 @@ public class Color implements Paint, Serializable
if (red == max)
array[0] = (green - blue) / delta;
else if (green == max)
array[0] = 1 / 3 + (blue - red) / delta;
array[0] = 1f / 3 + (blue - red) / delta;
else
array[0] = 2 / 3 + (red - green) / delta;
array[0] = 2f / 3 + (red - green) / delta;
if (array[0] < 0)
array[0]++;
}
+95 -47
View File
@@ -58,6 +58,7 @@ import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.PaintEvent;
import java.awt.event.WindowEvent;
import java.awt.im.InputContext;
import java.awt.im.InputMethodRequests;
import java.awt.image.BufferStrategy;
@@ -2262,7 +2263,7 @@ public abstract class Component
* This method simply calls handleEvent and returns the result.
*
* @param e the event to handle
* @return the result of handling <code>e</code>
* @return true if the event was handled, false otherwise
* @deprecated use {@link #dispatchEvent(AWTEvent)} instead
*/
public boolean postEvent(Event e)
@@ -3028,6 +3029,7 @@ public abstract class Component
mouseListener.mouseReleased(e);
break;
}
e.consume();
}
/**
@@ -3055,6 +3057,7 @@ public abstract class Component
mouseMotionListener.mouseMoved(e);
break;
}
e.consume();
}
/**
@@ -3073,7 +3076,10 @@ public abstract class Component
{
if (mouseWheelListener != null
&& e.id == MouseEvent.MOUSE_WHEEL)
{
mouseWheelListener.mouseWheelMoved(e);
e.consume();
}
}
/**
@@ -3205,135 +3211,145 @@ public abstract class Component
}
/**
* AWT 1.0 mouse event handler.
* AWT 1.0 MOUSE_DOWN event handler. This method is meant to be
* overridden by components providing their own MOUSE_DOWN handler.
* The default implementation simply returns false.
*
* @param evt the event to handle
* @param x the x coordinate, ignored
* @param y the y coordinate, ignored
* @return false: since the method was deprecated, the return has no meaning
* @return false
* @deprecated use {@link #processMouseEvent(MouseEvent)} instead
*/
public boolean mouseDown(Event evt, int x, int y)
{
// XXX Add backward compatibility handling.
return false;
}
/**
* AWT 1.0 mouse event.
* AWT 1.0 MOUSE_DRAG event handler. This method is meant to be
* overridden by components providing their own MOUSE_DRAG handler.
* The default implementation simply returns false.
*
* @param evt the event to handle
* @param x the x coordinate, ignored
* @param y the y coordinate, ignored
* @return false: since the method was deprecated, the return has no meaning
* @return false
* @deprecated use {@link #processMouseMotionEvent(MouseEvent)} instead
*/
public boolean mouseDrag(Event evt, int x, int y)
{
// XXX Add backward compatibility handling.
return false;
}
/**
* AWT 1.0 mouse event.
* AWT 1.0 MOUSE_UP event handler. This method is meant to be
* overridden by components providing their own MOUSE_UP handler.
* The default implementation simply returns false.
*
* @param evt the event to handle
* @param x the x coordinate, ignored
* @param y the y coordinate, ignored
* @return false: since the method was deprecated, the return has no meaning
* @return false
* @deprecated use {@link #processMouseEvent(MouseEvent)} instead
*/
public boolean mouseUp(Event evt, int x, int y)
{
// XXX Add backward compatibility handling.
return false;
}
/**
* AWT 1.0 mouse event.
* AWT 1.0 MOUSE_MOVE event handler. This method is meant to be
* overridden by components providing their own MOUSE_MOVE handler.
* The default implementation simply returns false.
*
* @param evt the event to handle
* @param x the x coordinate, ignored
* @param y the y coordinate, ignored
* @return false: since the method was deprecated, the return has no meaning
* @return false
* @deprecated use {@link #processMouseMotionEvent(MouseEvent)} instead
*/
public boolean mouseMove(Event evt, int x, int y)
{
// XXX Add backward compatibility handling.
return false;
}
/**
* AWT 1.0 mouse event.
* AWT 1.0 MOUSE_ENTER event handler. This method is meant to be
* overridden by components providing their own MOUSE_ENTER handler.
* The default implementation simply returns false.
*
* @param evt the event to handle
* @param x the x coordinate, ignored
* @param y the y coordinate, ignored
* @return false: since the method was deprecated, the return has no meaning
* @return false
* @deprecated use {@link #processMouseEvent(MouseEvent)} instead
*/
public boolean mouseEnter(Event evt, int x, int y)
{
// XXX Add backward compatibility handling.
return false;
}
/**
* AWT 1.0 mouse event.
* AWT 1.0 MOUSE_EXIT event handler. This method is meant to be
* overridden by components providing their own MOUSE_EXIT handler.
* The default implementation simply returns false.
*
* @param evt the event to handle
* @param x the x coordinate, ignored
* @param y the y coordinate, ignored
* @return false: since the method was deprecated, the return has no meaning
* @return false
* @deprecated use {@link #processMouseEvent(MouseEvent)} instead
*/
public boolean mouseExit(Event evt, int x, int y)
{
// XXX Add backward compatibility handling.
return false;
}
/**
* AWT 1.0 key press event.
* AWT 1.0 KEY_PRESS and KEY_ACTION event handler. This method is
* meant to be overridden by components providing their own key
* press handler. The default implementation simply returns false.
*
* @param evt the event to handle
* @param key the key pressed, ignored
* @return false: since the method was deprecated, the return has no meaning
* @return false
* @deprecated use {@link #processKeyEvent(KeyEvent)} instead
*/
public boolean keyDown(Event evt, int key)
{
// XXX Add backward compatibility handling.
return false;
}
/**
* AWT 1.0 key press event.
* AWT 1.0 KEY_RELEASE and KEY_ACTION_RELEASE event handler. This
* method is meant to be overridden by components providing their
* own key release handler. The default implementation simply
* returns false.
*
* @param evt the event to handle
* @param key the key pressed, ignored
* @return false: since the method was deprecated, the return has no meaning
* @return false
* @deprecated use {@link #processKeyEvent(KeyEvent)} instead
*/
public boolean keyUp(Event evt, int key)
{
// XXX Add backward compatibility handling.
return false;
}
/**
* AWT 1.0 action event processor.
* AWT 1.0 ACTION_EVENT event handler. This method is meant to be
* overridden by components providing their own action event
* handler. The default implementation simply returns false.
*
* @param evt the event to handle
* @param what the object acted on, ignored
* @return false: since the method was deprecated, the return has no meaning
* @return false
* @deprecated in classes which support actions, use
* <code>processActionEvent(ActionEvent)</code> instead
*/
public boolean action(Event evt, Object what)
{
// XXX Add backward compatibility handling.
return false;
}
@@ -3377,30 +3393,32 @@ public abstract class Component
}
/**
* AWT 1.0 focus event.
* AWT 1.0 GOT_FOCUS event handler. This method is meant to be
* overridden by components providing their own GOT_FOCUS handler.
* The default implementation simply returns false.
*
* @param evt the event to handle
* @param what the Object focused, ignored
* @return false: since the method was deprecated, the return has no meaning
* @return false
* @deprecated use {@link #processFocusEvent(FocusEvent)} instead
*/
public boolean gotFocus(Event evt, Object what)
{
// XXX Add backward compatibility handling.
return false;
}
/**
* AWT 1.0 focus event.
* AWT 1.0 LOST_FOCUS event handler. This method is meant to be
* overridden by components providing their own LOST_FOCUS handler.
* The default implementation simply returns false.
*
* @param evt the event to handle
* @param what the Object focused, ignored
* @return false: since the method was deprecated, the return has no meaning
* @return false
* @deprecated use {@link #processFocusEvent(FocusEvent)} instead
*/
public boolean lostFocus(Event evt, Object what)
{
// XXX Add backward compatibility handling.
return false;
}
@@ -3415,7 +3433,7 @@ public abstract class Component
*/
public boolean isFocusTraversable()
{
return enabled && visible && (peer == null || peer.isFocusTraversable());
return enabled && visible && (peer == null || isLightweight() || peer.isFocusTraversable());
}
/**
@@ -3430,7 +3448,11 @@ public abstract class Component
}
/**
* Specify whether this component can receive focus.
* Specify whether this component can receive focus. This method also
* sets the {@link #isFocusTraversableOverridden} field to 1, which
* appears to be the undocumented way {@link
* DefaultFocusTraversalPolicy#accept()} determines whether to respect
* the {@link #isFocusable()} method of the component.
*
* @param focusable the new focusable status
* @since 1.4
@@ -3439,6 +3461,7 @@ public abstract class Component
{
firePropertyChange("focusable", this.focusable, focusable);
this.focusable = focusable;
this.isFocusTraversableOverridden = 1;
}
/**
@@ -3697,7 +3720,7 @@ public abstract class Component
Window toplevel = (Window) parent;
if (toplevel.isFocusableWindow ())
{
if (peer != null)
if (peer != null && !isLightweight())
// This call will cause a FOCUS_GAINED event to be
// posted to the system event queue if the native
// windowing system grants the focus request.
@@ -3783,7 +3806,7 @@ public abstract class Component
Window toplevel = (Window) parent;
if (toplevel.isFocusableWindow ())
{
if (peer != null)
if (peer != null && !isLightweight())
// This call will cause a FOCUS_GAINED event to be
// posted to the system event queue if the native
// windowing system grants the focus request.
@@ -3904,6 +3927,7 @@ public abstract class Component
if (focusedWindow == toplevel)
{
if (peer != null
&& !isLightweight()
&& !(this instanceof Window))
// This call will cause a FOCUS_GAINED event to be
// posted to the system event queue if the native
@@ -4495,23 +4519,23 @@ p * <li>the set of backward traversal keys
int id = e.getID ();
int oldMods = 0;
int mods = ie.getModifiers ();
int mods = ie.getModifiersEx ();
if ((mods & InputEvent.BUTTON2_MASK) != 0)
if ((mods & InputEvent.BUTTON2_DOWN_MASK) != 0)
oldMods |= Event.META_MASK;
else if ((mods & InputEvent.BUTTON3_MASK) != 0)
else if ((mods & InputEvent.BUTTON3_DOWN_MASK) != 0)
oldMods |= Event.ALT_MASK;
if ((mods & (InputEvent.SHIFT_MASK | InputEvent.SHIFT_DOWN_MASK)) != 0)
if ((mods & InputEvent.SHIFT_DOWN_MASK) != 0)
oldMods |= Event.SHIFT_MASK;
if ((mods & (InputEvent.CTRL_MASK | InputEvent.CTRL_DOWN_MASK)) != 0)
if ((mods & InputEvent.CTRL_DOWN_MASK) != 0)
oldMods |= Event.CTRL_MASK;
if ((mods & (InputEvent.META_MASK | InputEvent.META_DOWN_MASK)) != 0)
if ((mods & InputEvent.META_DOWN_MASK) != 0)
oldMods |= Event.META_MASK;
if ((mods & (InputEvent.ALT_MASK | InputEvent.ALT_DOWN_MASK)) != 0)
if ((mods & InputEvent.ALT_DOWN_MASK) != 0)
oldMods |= Event.ALT_MASK;
if (e instanceof MouseEvent)
@@ -4673,7 +4697,8 @@ p * <li>the set of backward traversal keys
*
* @param e the event to dispatch
*/
void dispatchEventImpl(AWTEvent e)
void dispatchEventImpl (AWTEvent e)
{
Event oldEvent = translateEvent (e);
@@ -4681,7 +4706,30 @@ p * <li>the set of backward traversal keys
postEvent (oldEvent);
if (eventTypeEnabled (e.id))
processEvent(e);
{
// the trick we use to communicate between dispatch and redispatch
// is to have KeyboardFocusManager.redispatch synchronize on the
// object itself. we then do not redispatch to KeyboardFocusManager
// if we are already holding the lock.
if (! Thread.holdsLock(e))
{
switch (e.id)
{
case WindowEvent.WINDOW_GAINED_FOCUS:
case WindowEvent.WINDOW_LOST_FOCUS:
case KeyEvent.KEY_PRESSED:
case KeyEvent.KEY_RELEASED:
case KeyEvent.KEY_TYPED:
case FocusEvent.FOCUS_GAINED:
case FocusEvent.FOCUS_LOST:
if (KeyboardFocusManager
.getCurrentKeyboardFocusManager()
.dispatchEvent(e))
return;
}
}
processEvent (e);
}
}
/**
+27 -32
View File
@@ -1505,10 +1505,11 @@ public class Container extends Component
void dispatchEventImpl(AWTEvent e)
{
// Give lightweight dispatcher a chance to handle it.
if (dispatcher != null
if (eventTypeEnabled (e.id)
&& dispatcher != null
&& dispatcher.handleEvent (e))
return;
if ((e.id <= ContainerEvent.CONTAINER_LAST
&& e.id >= ContainerEvent.CONTAINER_FIRST)
&& (containerListener != null
@@ -1586,7 +1587,6 @@ public class Container extends Component
{
if (dispatcher == null)
dispatcher = new LightweightDispatcher (this);
dispatcher.enableEvents (component[i].eventMask);
}
@@ -1831,7 +1831,6 @@ class LightweightDispatcher implements Serializable
{
private static final long serialVersionUID = 5184291520170872969L;
private Container nativeContainer;
private Component focus;
private Cursor nativeCursor;
private long eventMask;
@@ -1845,11 +1844,6 @@ class LightweightDispatcher implements Serializable
nativeContainer = c;
}
void enableEvents(long l)
{
eventMask |= l;
}
void acquireComponentForMouseEvent(MouseEvent me)
{
int x = me.getX ();
@@ -1863,8 +1857,9 @@ class LightweightDispatcher implements Serializable
{
candidate =
SwingUtilities.getDeepestComponentAt(parent, p.x, p.y);
if (candidate == null)
if (candidate == null || (candidate.eventMask & me.getID()) == 0)
{
candidate = null;
p = SwingUtilities.convertPoint(parent, p.x, p.y, parent.parent);
parent = parent.parent;
}
@@ -1881,21 +1876,25 @@ class LightweightDispatcher implements Serializable
&& lastComponentEntered.isShowing()
&& lastComponentEntered != candidate)
{
Point tp =
SwingUtilities.convertPoint(nativeContainer,
x, y, lastComponentEntered);
MouseEvent exited = new MouseEvent (lastComponentEntered,
MouseEvent.MOUSE_EXITED,
me.getWhen (),
me.getModifiers (),
tp.x, tp.y,
me.getClickCount (),
me.isPopupTrigger (),
me.getButton ());
lastComponentEntered.dispatchEvent (exited);
// Old candidate could have been removed from
// the nativeContainer so we check first.
if (SwingUtilities.isDescendingFrom(lastComponentEntered, nativeContainer))
{
Point tp =
SwingUtilities.convertPoint(nativeContainer,
x, y, lastComponentEntered);
MouseEvent exited = new MouseEvent (lastComponentEntered,
MouseEvent.MOUSE_EXITED,
me.getWhen (),
me.getModifiersEx (),
tp.x, tp.y,
me.getClickCount (),
me.isPopupTrigger (),
me.getButton ());
lastComponentEntered.dispatchEvent (exited);
}
lastComponentEntered = null;
}
// If we have a candidate, maybe enter it.
if (candidate != null)
{
@@ -1911,7 +1910,7 @@ class LightweightDispatcher implements Serializable
MouseEvent entered = new MouseEvent (lastComponentEntered,
MouseEvent.MOUSE_ENTERED,
me.getWhen (),
me.getModifiers (),
me.getModifiersEx (),
cp.x, cp.y,
me.getClickCount (),
me.isPopupTrigger (),
@@ -1929,7 +1928,8 @@ class LightweightDispatcher implements Serializable
// - MOUSE_RELEASED
// - MOUSE_PRESSED: another button pressed while the first is held down
// - MOUSE_DRAGGED
mouseEventTarget = pressedComponent;
if (SwingUtilities.isDescendingFrom(pressedComponent, nativeContainer))
mouseEventTarget = pressedComponent;
else if (me.getID() == MouseEvent.MOUSE_CLICKED)
{
// Don't dispatch CLICKED events whose target is not the same as the
@@ -1943,9 +1943,6 @@ class LightweightDispatcher implements Serializable
boolean handleEvent(AWTEvent e)
{
if ((eventMask & e.getID()) == 0)
return false;
if (e instanceof MouseEvent)
{
MouseEvent me = (MouseEvent) e;
@@ -1979,12 +1976,10 @@ class LightweightDispatcher implements Serializable
pressedComponent = null;
break;
}
if (newEvt.isConsumed())
e.consume();
}
}
else if (e instanceof KeyEvent && focus != null)
{
focus.processKeyEvent((KeyEvent) e);
}
return e.isConsumed();
}
@@ -92,19 +92,17 @@ public class DefaultFocusTraversalPolicy
&& comp.enabled)
{
if (comp.isFocusTraversableOverridden != 0
&& comp.isFocusTraversable ())
return true;
else
{
if (!(comp instanceof Canvas
|| comp instanceof Panel
|| comp instanceof Label
|| comp instanceof ScrollPane
|| comp instanceof Scrollbar
|| comp instanceof Window
|| comp.isLightweight ()))
return true;
}
&& (comp.isFocusTraversable () || comp.isFocusable()))
return true;
if (!(comp instanceof Canvas
|| comp instanceof Panel
|| comp instanceof Label
|| comp instanceof ScrollPane
|| comp instanceof Scrollbar
|| comp instanceof Window
|| comp.isLightweight ()))
return true;
}
return false;
}
@@ -155,7 +155,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
&& e.id != WindowEvent.WINDOW_DEACTIVATED)
return false;
target.dispatchEvent (e);
redispatchEvent(target, e);
return true;
}
else if (e instanceof FocusEvent)
@@ -197,7 +197,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
setGlobalPermanentFocusOwner (null);
}
target.dispatchEvent (e);
redispatchEvent(target, e);
return true;
}
@@ -258,7 +258,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
Component focusOwner = getGlobalPermanentFocusOwner ();
if (focusOwner != null)
focusOwner.dispatchEvent (e);
redispatchEvent(focusOwner, e);
// Loop through all registered KeyEventPostProcessors, giving
// each a chance to process this event.
@@ -284,10 +284,10 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
{
// Check if this event represents a menu shortcut.
// MenuShortcuts are activated by Ctrl- KeyEvents.
int modifiers = e.getModifiers ();
if ((modifiers & KeyEvent.CTRL_MASK) != 0
|| (modifiers & KeyEvent.CTRL_DOWN_MASK) != 0)
// MenuShortcuts are activated by Ctrl- KeyEvents, only on KEY_PRESSED.
int modifiers = e.getModifiersEx ();
if (e.getID() == KeyEvent.KEY_PRESSED
&& (modifiers & KeyEvent.CTRL_DOWN_MASK) != 0)
{
Window focusedWindow = getGlobalFocusedWindow ();
if (focusedWindow instanceof Frame)
@@ -311,17 +311,21 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
MenuItem item = menu.getItem (j);
MenuShortcut shortcut = item.getShortcut ();
if (shortcut != null)
if (item.isEnabled() && shortcut != null)
{
// Dispatch a new ActionEvent if this is a
// Shift- KeyEvent and the shortcut requires
// the Shift modifier, or if the shortcut
// doesn't require the Shift modifier.
if ((shortcut.usesShiftModifier ()
&& ((modifiers & KeyEvent.SHIFT_MASK) != 0
|| (modifiers & KeyEvent.SHIFT_DOWN_MASK) != 0)
|| !shortcut.usesShiftModifier ())
&& shortcut.getKey () == e.getKeyCode ())
// Dispatch a new ActionEvent if:
//
// a) this is a Shift- KeyEvent, and the
// shortcut requires the Shift modifier
//
// or, b) this is not a Shift- KeyEvent, and the
// shortcut does not require the Shift
// modifier.
if (shortcut.getKey () == e.getKeyCode ()
&& ((shortcut.usesShiftModifier ()
&& (modifiers & KeyEvent.SHIFT_DOWN_MASK) != 0)
|| (! shortcut.usesShiftModifier ()
&& (modifiers & KeyEvent.SHIFT_DOWN_MASK) == 0)))
{
item.dispatchEvent (new ActionEvent (item,
ActionEvent.ACTION_PERFORMED,
@@ -347,7 +351,7 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
// KEY_PRESSED TAB is a focus traversal keystroke, we also need to
// consume KEY_RELEASED and KEY_TYPED TAB key events).
AWTKeyStroke oppositeKeystroke = AWTKeyStroke.getAWTKeyStroke (e.getKeyCode (),
e.getModifiers (),
e.getModifiersEx (),
!(e.id == KeyEvent.KEY_RELEASED));
Set forwardKeystrokes = comp.getFocusTraversalKeys (KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
@@ -439,7 +443,8 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
FocusTraversalPolicy policy = focusCycleRoot.getFocusTraversalPolicy ();
Component previous = policy.getComponentBefore (focusCycleRoot, focusComp);
previous.requestFocusInWindow ();
if (previous != null)
previous.requestFocusInWindow ();
}
public void focusNextComponent (Component comp)
@@ -449,7 +454,8 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
FocusTraversalPolicy policy = focusCycleRoot.getFocusTraversalPolicy ();
Component next = policy.getComponentAfter (focusCycleRoot, focusComp);
next.requestFocusInWindow ();
if (next != null)
next.requestFocusInWindow ();
}
public void upFocusCycle (Component comp)
@@ -461,7 +467,8 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
{
FocusTraversalPolicy policy = focusCycleRoot.getFocusTraversalPolicy ();
Component defaultComponent = policy.getDefaultComponent (focusCycleRoot);
defaultComponent.requestFocusInWindow ();
if (defaultComponent != null)
defaultComponent.requestFocusInWindow ();
}
else
{
@@ -481,7 +488,8 @@ public class DefaultKeyboardFocusManager extends KeyboardFocusManager
{
FocusTraversalPolicy policy = cont.getFocusTraversalPolicy ();
Component defaultComponent = policy.getDefaultComponent (cont);
defaultComponent.requestFocusInWindow ();
if (defaultComponent != null)
defaultComponent.requestFocusInWindow ();
setGlobalCurrentFocusCycleRoot (cont);
}
}
+22 -6
View File
@@ -1265,12 +1265,28 @@ equals(Object obj)
public String
toString()
{
return(getClass().getName()
+ "(logical=" + getName ()
+ ",family=" + getFamily ()
+ ",name=" + getFontName ()
+ ",style=" + getStyle ()
+ ",size=" + getSize ());
String styleString = "";
switch (getStyle ())
{
case 0:
styleString = "plain";
break;
case 1:
styleString = "bold";
break;
case 2:
styleString = "italic";
break;
default:
styleString = "unknown";
}
return getClass ().getName ()
+ "[family=" + getFamily ()
+ ",name=" + getFontName ()
+ ",style=" + styleString
+ ",size=" + getSize () + "]";
}
+5 -5
View File
@@ -732,14 +732,14 @@ finalize()
/*************************************************************************/
/**
* Returns a string representation of this object.
*
* @param A string representation of this object.
*/
* Returns a string representation of this object.
*
* @param A string representation of this object.
*/
public String
toString()
{
return(super.toString());
return getClass ().getName () + "[font=" + getFont () + ",color=" + getColor () + "]";
}
public boolean
+5 -2
View File
@@ -740,8 +740,11 @@ public abstract class KeyboardFocusManager
public final void redispatchEvent (Component target, AWTEvent e)
{
e.setSource (target);
dispatchEvent (e);
synchronized (e)
{
e.setSource (target);
target.dispatchEvent (e);
}
}
public abstract boolean dispatchKeyEvent (KeyEvent e);
+8 -4
View File
@@ -128,15 +128,15 @@ setHelpMenu(Menu menu)
helpMenu.removeNotify ();
helpMenu.parent = null;
}
helpMenu = menu;
if (menu.parent != null)
menu.parent.remove (menu);
if (menu.parent != null)
menu.parent.remove (menu);
menu.parent = this;
if (peer != null)
{
menu.addNotify();
MenuBarPeer mp = (MenuBarPeer) peer;
mp.addHelpMenu (menu);
}
@@ -163,8 +163,7 @@ add(Menu menu)
if (peer != null)
{
MenuBarPeer mp = (MenuBarPeer) peer;
mp.addMenu (menu);
menu.addNotify();
}
return(menu);
@@ -269,6 +268,11 @@ addNotify()
Menu mi = (Menu)e.nextElement();
mi.addNotify();
}
if (helpMenu != null)
{
helpMenu.addNotify();
((MenuBarPeer) peer).addHelpMenu(helpMenu);
}
}
/*************************************************************************/
+1 -1
View File
@@ -77,7 +77,7 @@ private String actionCommand;
/**
* @serial Indicates whether or not this menu item is enabled.
*/
private boolean enabled;
private boolean enabled = true;
/**
* @serial The mask of events that are enabled for this menu item.
+1 -1
View File
@@ -542,7 +542,7 @@ public class Rectangle extends Rectangle2D implements Shape, Serializable
*/
public boolean intersects(Rectangle r)
{
return width > 0 && height > 0 && r.width > 0 && r.height > 0
return r.width > 0 && r.height > 0 && width > 0 && height > 0
&& r.x < x + width && r.x + r.width > x
&& r.y < y + height && r.y + r.height > y;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+167 -161
View File
@@ -1,5 +1,5 @@
/* RoundRectangle2D.java -- represents a rectangle with rounded corners
Copyright (C) 2000, 2002, 2003 Free Software Foundation
Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation
This file is part of GNU Classpath.
@@ -39,6 +39,7 @@ package java.awt.geom;
import java.util.NoSuchElementException;
/** This class implements a rectangle with rounded corners.
* @author Tom Tromey <tromey@cygnus.com>
* @date December 3, 2000
@@ -60,12 +61,12 @@ public abstract class RoundRectangle2D extends RectangularShape
* @param arcHeight The arc height
*/
public abstract void setRoundRect(double x, double y, double w, double h,
double arcWidth, double arcHeight);
double arcWidth, double arcHeight);
/** Create a RoundRectangle2D. This is protected because this class
* is abstract and cannot be instantiated.
*/
protected RoundRectangle2D()
protected RoundRectangle2D()
{
}
@@ -87,8 +88,11 @@ public abstract class RoundRectangle2D extends RectangularShape
// Now check to see if the point is in range of an arc.
double dy = Math.min(Math.abs(my - y), Math.abs(my + mh - y));
double dx = Math.min(Math.abs(mx - x), Math.abs(mx + mw - x));
double aw = getArcWidth();
double ah = getArcHeight();
// The arc dimensions are that of the corresponding ellipse
// thus a 90 degree segment is half of that.
double aw = getArcWidth() / 2.0;
double ah = getArcHeight() / 2.0;
if (dx > aw || dy > ah)
return true;
@@ -112,8 +116,8 @@ public abstract class RoundRectangle2D extends RectangularShape
{
// We have to check all four points here (for ordinary rectangles
// we can just check opposing corners).
return (contains(x, y) && contains(x + w, h)
&& contains(x, y + h) && contains(x + w, y + h));
return (contains(x, y) && contains(x, y + h) && contains(x + w, y + h)
&& contains(x + w, y));
}
/** Return a new path iterator which iterates over this rectangle.
@@ -128,154 +132,161 @@ public abstract class RoundRectangle2D extends RectangularShape
final double arcwidth = getArcWidth();
final double archeight = getArcHeight();
return new PathIterator()
{
/** We iterate clockwise around the rectangle, starting in the
* upper left. This variable tracks our current point, which
* can be on either side of a given corner. */
private int current = 0;
/** Child path iterator, used for corners. */
private PathIterator corner;
/** This is used when rendering the corners. We re-use the arc
* for each corner. */
private Arc2D arc = new Arc2D.Double();
/** Temporary array used by getPoint. */
private double[] temp = new double[2];
public int getWindingRule()
{
return WIND_NON_ZERO;
}
/** We iterate counterclockwise around the rectangle, starting in the
* upper right. This variable tracks our current point, which
* can be on either side of a given corner. */
private int current = 0;
public boolean isDone()
{
return current > 9;
}
/** Child path iterator, used for corners. */
private PathIterator corner;
private void getPoint(int val)
{
switch (val)
{
case 0:
case 8:
temp[0] = minx;
temp[1] = miny + archeight;
break;
case 1:
temp[0] = minx + arcwidth;
temp[1] = miny;
break;
case 2:
temp[0] = maxx - arcwidth;
temp[1] = maxy;
break;
case 3:
temp[0] = maxx;
temp[1] = miny + archeight;
break;
case 4:
temp[0] = maxx;
temp[1] = maxy - archeight;
break;
case 5:
temp[0] = maxx - arcwidth;
temp[1] = maxy;
break;
case 6:
temp[0] = minx + arcwidth;
temp[1] = maxy;
break;
case 7:
temp[0] = minx;
temp[1] = maxy - archeight;
break;
}
}
/** This is used when rendering the corners. We re-use the arc
* for each corner. */
private Arc2D arc = new Arc2D.Double();
public void next()
{
if (current >= 8)
++current;
else if (corner != null)
{
// We're iterating through the corner. Work on the child
// iterator; if it finishes, reset and move to the next
// point along the rectangle.
corner.next();
if (corner.isDone())
{
corner = null;
++current;
}
}
else
{
// Make an arc between this point on the rectangle and
// the next one, and then iterate over this arc.
getPoint(current);
double x1 = temp[0];
double y1 = temp[1];
getPoint(current + 1);
arc.setFrameFromDiagonal(x1, y1, temp[0], temp[1]);
arc.setAngles(x1, y1, temp[0], temp[1]);
corner = arc.getPathIterator(at);
}
}
/** Temporary array used by getPoint. */
private double[] temp = new double[2];
public int currentSegment(float[] coords)
{
if (corner != null)
{
int r = corner.currentSegment(coords);
if (r == SEG_MOVETO)
r = SEG_LINETO;
return r;
}
public int getWindingRule()
{
return WIND_NON_ZERO;
}
if (current < 9)
{
getPoint(current);
coords[0] = (float) temp[0];
coords[1] = (float) temp[1];
}
else if (current == 9)
return SEG_CLOSE;
else
throw new NoSuchElementException("rect iterator out of bounds");
public boolean isDone()
{
return current > 9;
}
if (at != null)
at.transform(coords, 0, coords, 0, 1);
return current == 0 ? SEG_MOVETO : SEG_LINETO;
}
private void getPoint(int val)
{
switch (val)
{
case 0:
case 8:
temp[0] = maxx;
temp[1] = miny + archeight;
break;
case 7:
temp[0] = maxx;
temp[1] = maxy - archeight;
break;
case 6:
temp[0] = maxx - arcwidth;
temp[1] = maxy;
break;
case 5:
temp[0] = minx + arcwidth;
temp[1] = maxy;
break;
case 4:
temp[0] = minx;
temp[1] = maxy - archeight;
break;
case 3:
temp[0] = minx;
temp[1] = miny + archeight;
break;
case 2:
temp[0] = minx + arcwidth;
temp[1] = miny;
break;
case 1:
temp[0] = maxx - arcwidth;
temp[1] = miny;
break;
}
}
public int currentSegment(double[] coords)
{
if (corner != null)
{
int r = corner.currentSegment(coords);
if (r == SEG_MOVETO)
r = SEG_LINETO;
return r;
}
public void next()
{
if (current >= 8)
++current;
else if (corner != null)
{
// We're iterating through the corner. Work on the child
// iterator; if it finishes, reset and move to the next
// point along the rectangle.
corner.next();
if (corner.isDone())
{
corner = null;
++current;
}
}
else
{
// Make an arc between this point on the rectangle and
// the next one, and then iterate over this arc.
getPoint(current);
double x1 = temp[0];
double y1 = temp[1];
getPoint(current + 1);
Rectangle2D.Double r = new Rectangle2D.Double(Math.min(x1,
temp[0]),
Math.min(y1,
temp[1]),
Math.abs(x1
- temp[0]),
Math.abs(y1
- temp[1]));
arc.setArc(r, (current >> 1) * 90.0, 90.0, Arc2D.OPEN);
corner = arc.getPathIterator(at);
}
}
if (current < 9)
{
getPoint(current);
coords[0] = temp[0];
coords[1] = temp[1];
}
else if (current == 9)
return SEG_CLOSE;
else
throw new NoSuchElementException("rect iterator out of bounds");
public int currentSegment(float[] coords)
{
if (corner != null)
{
int r = corner.currentSegment(coords);
if (r == SEG_MOVETO)
r = SEG_LINETO;
return r;
}
if (at != null)
at.transform(coords, 0, coords, 0, 1);
return current == 0 ? SEG_MOVETO : SEG_LINETO;
}
};
if (current < 9)
{
getPoint(current);
coords[0] = (float) temp[0];
coords[1] = (float) temp[1];
}
else if (current == 9)
return SEG_CLOSE;
else
throw new NoSuchElementException("rect iterator out of bounds");
if (at != null)
at.transform(coords, 0, coords, 0, 1);
return current == 0 ? SEG_MOVETO : SEG_LINETO;
}
public int currentSegment(double[] coords)
{
if (corner != null)
{
int r = corner.currentSegment(coords);
if (r == SEG_MOVETO)
r = SEG_LINETO;
return r;
}
if (current < 9)
{
getPoint(current);
coords[0] = temp[0];
coords[1] = temp[1];
}
else if (current == 9)
return SEG_CLOSE;
else
throw new NoSuchElementException("rect iterator out of bounds");
if (at != null)
at.transform(coords, 0, coords, 0, 1);
return current == 0 ? SEG_MOVETO : SEG_LINETO;
}
};
}
/** Return true if the given rectangle intersects this shape.
@@ -286,14 +297,9 @@ public abstract class RoundRectangle2D extends RectangularShape
*/
public boolean intersects(double x, double y, double w, double h)
{
// Here we can use the same code we use for an ordinary rectangle.
double mx = getX();
double mw = getWidth();
if (x < mx || x >= mx + mw || x + w < mx || x + w >= mx + mw)
return false;
double my = getY();
double mh = getHeight();
return y >= my && y < my + mh && y + h >= my && y + h < my + mh;
// Check if any corner is within the rectangle
return (contains(x, y) || contains(x, y + h) || contains(x + w, y + h)
|| contains(x + w, y));
}
/** Set the boundary of this round rectangle.
@@ -315,7 +321,7 @@ public abstract class RoundRectangle2D extends RectangularShape
public void setRoundRect(RoundRectangle2D rr)
{
setRoundRect(rr.getX(), rr.getY(), rr.getWidth(), rr.getHeight(),
rr.getArcWidth(), rr.getArcHeight());
rr.getArcWidth(), rr.getArcHeight());
}
/** A subclass of RoundRectangle which keeps its parameters as
@@ -353,8 +359,8 @@ public abstract class RoundRectangle2D extends RectangularShape
* @param arcWidth The arc width
* @param arcHeight The arc height
*/
public Double(double x, double y, double w, double h,
double arcWidth, double arcHeight)
public Double(double x, double y, double w, double h, double arcWidth,
double arcHeight)
{
this.x = x;
this.y = y;
@@ -405,7 +411,7 @@ public abstract class RoundRectangle2D extends RectangularShape
}
public void setRoundRect(double x, double y, double w, double h,
double arcWidth, double arcHeight)
double arcWidth, double arcHeight)
{
this.x = x;
this.y = y;
@@ -451,8 +457,8 @@ public abstract class RoundRectangle2D extends RectangularShape
* @param arcWidth The arc width
* @param arcHeight The arc height
*/
public Float(float x, float y, float w, float h,
float arcWidth, float arcHeight)
public Float(float x, float y, float w, float h, float arcWidth,
float arcHeight)
{
this.x = x;
this.y = y;
@@ -503,7 +509,7 @@ public abstract class RoundRectangle2D extends RectangularShape
}
public void setRoundRect(float x, float y, float w, float h,
float arcWidth, float arcHeight)
float arcWidth, float arcHeight)
{
this.x = x;
this.y = y;
@@ -514,7 +520,7 @@ public abstract class RoundRectangle2D extends RectangularShape
}
public void setRoundRect(double x, double y, double w, double h,
double arcWidth, double arcHeight)
double arcWidth, double arcHeight)
{
this.x = (float) x;
this.y = (float) y;
+1 -1
View File
@@ -60,7 +60,6 @@ public class DirectColorModel extends PackedColorModel
* @param rmask the bits describing the red component of a pixel
* @param gmask the bits describing the green component of a pixel
* @param bmask the bits describing the blue component of a pixel
* @param amask the bits describing the alpha component of a pixel
*/
public DirectColorModel(int pixelBits, int rmask, int gmask, int bmask)
{
@@ -82,6 +81,7 @@ public class DirectColorModel extends PackedColorModel
* @param rmask the bits describing the red component of a pixel
* @param gmask the bits describing the green component of a pixel
* @param bmask the bits describing the blue component of a pixel
* @param amask the bits describing the alpha component of a pixel
*/
public DirectColorModel(int pixelBits,
int rmask, int gmask, int bmask, int amask)
+9 -2
View File
@@ -117,7 +117,7 @@ public class Kernel implements Cloneable
throws IllegalArgumentException
{
if (data == null)
return (float[])this.data.clone();
return (float[])this.data.clone();
if (data.length < this.data.length)
throw new IllegalArgumentException();
@@ -131,6 +131,13 @@ public class Kernel implements Cloneable
*/
public Object clone()
{
return new Kernel(width, height, data);
try
{
return super.clone();
}
catch (CloneNotSupportedException e)
{
throw (Error) new InternalError().initCause(e); // Impossible
}
}
}
-1
View File
@@ -43,7 +43,6 @@ import java.awt.Menu;
public interface MenuBarPeer extends MenuComponentPeer
{
void addHelpMenu(Menu menu);
void addMenu(Menu menu);
void delMenu(int index);
} // interface MenuBarPeer