Imported Classpath 0.18.
* sources.am, Makefile.in: Updated. * Makefile.am (nat_source_files): Removed natProxy.cc. * java/lang/reflect/natProxy.cc: Removed. * gnu/classpath/jdwp/VMFrame.java, gnu/classpath/jdwp/VMIdManager.java, gnu/classpath/jdwp/VMVirtualMachine.java, java/lang/reflect/VMProxy.java: New files. 2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com> * scripts/makemake.tcl (verbose): Add gnu/java/awt/peer/qt to BC list. 2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com> * gnu/java/net/DefaultContentHandlerFactory.java (getContent): Remove ClasspathToolkit references. 2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com> * gnu/awt/xlib/XCanvasPeer.java: Add new peer methods. * gnu/awt/xlib/XFramePeer.java: Likewise. * gnu/awt/xlib/XGraphicsConfiguration.java: Likewise. 2005-09-23 Thomas Fitzsimmons <fitzsim@redhat.com> * Makefile.am (libgcjawt_la_SOURCES): Remove jawt.c. Add classpath/native/jawt/jawt.c. * Makefile.in: Regenerate. * jawt.c: Remove file. * include/Makefile.am (tool_include__HEADERS): Remove jawt.h and jawt_md.h. Add ../classpath/include/jawt.h and ../classpath/include/jawt_md.h. * include/Makefile.in: Regenerate. * include/jawt.h: Regenerate. * include/jawt_md.h: Regenerate. From-SVN: r104586
This commit is contained in:
parent
9b044d1951
commit
1ea63ef8be
544 changed files with 34724 additions and 14512 deletions
|
@ -1,5 +1,5 @@
|
|||
/* DefaultCaret.java --
|
||||
Copyright (C) 2002, 2004 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
|
@ -51,69 +51,203 @@ import javax.swing.event.ChangeEvent;
|
|||
import javax.swing.event.ChangeListener;
|
||||
import javax.swing.event.EventListenerList;
|
||||
|
||||
|
||||
/**
|
||||
* The default implementation of the {@link Caret} interface.
|
||||
*
|
||||
* @author orgininal author unknown
|
||||
* @author Roman Kennke (roman@kennke.org)
|
||||
*/
|
||||
public class DefaultCaret extends Rectangle
|
||||
implements Caret, FocusListener, MouseListener, MouseMotionListener
|
||||
{
|
||||
/**
|
||||
* The serial version UID for DefaultCaret.
|
||||
*/
|
||||
private static final long serialVersionUID = 228155774675466193L;
|
||||
|
||||
|
||||
/**
|
||||
* The <code>ChangeEvent</code> that is fired by {@link #fireStateChanged()}.
|
||||
*/
|
||||
protected ChangeEvent changeEvent = new ChangeEvent(this);
|
||||
|
||||
/**
|
||||
* Stores all registered event listeners.
|
||||
*/
|
||||
protected EventListenerList listenerList = new EventListenerList();
|
||||
|
||||
|
||||
/**
|
||||
* The text component in which this caret is installed.
|
||||
*/
|
||||
private JTextComponent textComponent;
|
||||
|
||||
|
||||
/**
|
||||
* Indicates if the selection should be visible or not.
|
||||
*/
|
||||
private boolean selectionVisible = true;
|
||||
|
||||
/**
|
||||
* The blink rate of this <code>Caret</code>.
|
||||
*/
|
||||
private int blinkRate = 500;
|
||||
|
||||
/**
|
||||
* The current dot position.
|
||||
*/
|
||||
private int dot = 0;
|
||||
|
||||
/**
|
||||
* The current mark position.
|
||||
*/
|
||||
private int mark = 0;
|
||||
|
||||
/**
|
||||
* The current visual caret position.
|
||||
*/
|
||||
private Point magicCaretPosition = null;
|
||||
|
||||
/**
|
||||
* Indicates if this <code>Caret</code> is currently visible or not.
|
||||
*/
|
||||
private boolean visible = true;
|
||||
|
||||
/**
|
||||
* The current highlight entry.
|
||||
*/
|
||||
private Object highlightEntry;
|
||||
|
||||
/**
|
||||
* Moves the caret position when the mouse is dragged over the text
|
||||
* component, modifying the selection accordingly.
|
||||
*
|
||||
* @param event the <code>MouseEvent</code> describing the drag operation
|
||||
*/
|
||||
public void mouseDragged(MouseEvent event)
|
||||
{
|
||||
// FIXME: Implement this properly.
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates a mouse movement over the text component. Does nothing here.
|
||||
*
|
||||
* @param event the <code>MouseEvent</code> describing the mouse operation
|
||||
*/
|
||||
public void mouseMoved(MouseEvent event)
|
||||
{
|
||||
// Nothing to do here.
|
||||
}
|
||||
|
||||
/**
|
||||
* When the click is received from Button 1 then the following actions
|
||||
* are performed here:
|
||||
*
|
||||
* <ul>
|
||||
* <li>If we receive a double click, the caret position (dot) is set
|
||||
* to the position associated to the mouse click and the word at
|
||||
* this location is selected.</li>
|
||||
* <li>If we receive a triple click, the caret position (dot) is set
|
||||
* to the position associated to the mouse click and the line at
|
||||
* this location is selected.</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param event the <code>MouseEvent</code> describing the click operation
|
||||
*/
|
||||
public void mouseClicked(MouseEvent event)
|
||||
{
|
||||
// FIXME: Implement this properly.
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates that the mouse has entered the text component. Nothing is done
|
||||
* here.
|
||||
*
|
||||
* @param event the <code>MouseEvent</code> describing the mouse operation
|
||||
*/
|
||||
public void mouseEntered(MouseEvent event)
|
||||
{
|
||||
// Nothing to do here.
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates that the mouse has exited the text component. Nothing is done
|
||||
* here.
|
||||
*
|
||||
* @param event the <code>MouseEvent</code> describing the mouse operation
|
||||
*/
|
||||
public void mouseExited(MouseEvent event)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* If the button 1 is pressed, the caret position is updated to the
|
||||
* position of the mouse click and the text component requests the input
|
||||
* focus if it is enabled. If the SHIFT key is held down, the caret will
|
||||
* be moved, which might select the text between the old and new location.
|
||||
*
|
||||
* @param event the <code>MouseEvent</code> describing the press operation
|
||||
*/
|
||||
public void mousePressed(MouseEvent event)
|
||||
{
|
||||
// FIXME: Implement this properly.
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates that a mouse button has been released on the text component.
|
||||
* Nothing is done here.
|
||||
*
|
||||
* @param event the <code>MouseEvent</code> describing the mouse operation
|
||||
*/
|
||||
public void mouseReleased(MouseEvent event)
|
||||
{
|
||||
// Nothing to do here.
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the caret to <code>visible</code> if the text component is editable.
|
||||
*
|
||||
* @param event the <code>FocusEvent</code>
|
||||
*/
|
||||
public void focusGained(FocusEvent event)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the caret to <code>invisible</code>.
|
||||
*
|
||||
* @param event the <code>FocusEvent</code>
|
||||
*/
|
||||
public void focusLost(FocusEvent event)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves the caret to the position specified in the <code>MouseEvent</code>.
|
||||
* This will cause a selection if the dot and mark are different.
|
||||
*
|
||||
* @param event the <code>MouseEvent</code> from which to fetch the position
|
||||
*/
|
||||
protected void moveCaret(MouseEvent event)
|
||||
{
|
||||
// FIXME: Implement this properly.
|
||||
}
|
||||
|
||||
/**
|
||||
* Repositions the caret to the position specified in the
|
||||
* <code>MouseEvent</code>.
|
||||
*
|
||||
* @param event the <code>MouseEvent</code> from which to fetch the position
|
||||
*/
|
||||
protected void positionCaret(MouseEvent event)
|
||||
{
|
||||
// FIXME: Implement this properly.
|
||||
}
|
||||
|
||||
/**
|
||||
* Deinstalls this <code>Caret</code> from the specified
|
||||
* <code>JTextComponent</code>. This removes any listeners that have been
|
||||
* registered by this <code>Caret</code>.
|
||||
*
|
||||
* @param c the text component from which to install this caret
|
||||
*/
|
||||
public void deinstall(JTextComponent c)
|
||||
{
|
||||
textComponent.removeFocusListener(this);
|
||||
|
@ -122,6 +256,13 @@ public class DefaultCaret extends Rectangle
|
|||
textComponent = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Installs this <code>Caret</code> on the specified
|
||||
* <code>JTextComponent</code>. This registers a couple of listeners
|
||||
* on the text component.
|
||||
*
|
||||
* @param c the text component on which to install this caret
|
||||
*/
|
||||
public void install(JTextComponent c)
|
||||
{
|
||||
textComponent = c;
|
||||
|
@ -131,16 +272,37 @@ public class DefaultCaret extends Rectangle
|
|||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the current visual position of this <code>Caret</code>.
|
||||
*
|
||||
* @param p the Point to use for the saved location. May be <code>null</code>
|
||||
* to indicate that there is no visual location
|
||||
*/
|
||||
public void setMagicCaretPosition(Point p)
|
||||
{
|
||||
magicCaretPosition = p;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current visual position of this <code>Caret</code>.
|
||||
*
|
||||
* @return the current visual position of this <code>Caret</code>
|
||||
*
|
||||
* @see #setMagicCaretPosition
|
||||
*/
|
||||
public Point getMagicCaretPosition()
|
||||
{
|
||||
return magicCaretPosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current position of the <code>mark</code>. The
|
||||
* <code>mark</code> marks the location in the <code>Document</code> that
|
||||
* is the end of a selection. If there is no selection, the <code>mark</code>
|
||||
* is the same as the <code>dot</code>.
|
||||
*
|
||||
* @return the current position of the mark
|
||||
*/
|
||||
public int getMark()
|
||||
{
|
||||
return mark;
|
||||
|
@ -181,6 +343,12 @@ public class DefaultCaret extends Rectangle
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the visiblity state of the selection.
|
||||
*
|
||||
* @param v <code>true</code> if the selection should be visible,
|
||||
* <code>false</code> otherwise
|
||||
*/
|
||||
public void setSelectionVisible(boolean v)
|
||||
{
|
||||
if (selectionVisible == v)
|
||||
|
@ -191,17 +359,35 @@ public class DefaultCaret extends Rectangle
|
|||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns <code>true</code> if the selection is currently visible,
|
||||
* <code>false</code> otherwise.
|
||||
*
|
||||
* @return <code>true</code> if the selection is currently visible,
|
||||
* <code>false</code> otherwise
|
||||
*/
|
||||
public boolean isSelectionVisible()
|
||||
{
|
||||
return selectionVisible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Causes the <code>Caret</code> to repaint itself.
|
||||
*/
|
||||
protected final void repaint()
|
||||
{
|
||||
// FIXME: Is this good? This possibly causes alot of the component
|
||||
// hierarchy to be repainted on every caret blink.
|
||||
if (textComponent != null)
|
||||
textComponent.repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Paints this <code>Caret</code> using the specified <code>Graphics</code>
|
||||
* context.
|
||||
*
|
||||
* @param g the graphics context to use
|
||||
*/
|
||||
public void paint(Graphics g)
|
||||
{
|
||||
if (textComponent == null)
|
||||
|
@ -234,26 +420,53 @@ public class DefaultCaret extends Rectangle
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all registered event listeners of the specified type.
|
||||
*
|
||||
* @param listenerType the type of listener to return
|
||||
*
|
||||
* @return all registered event listeners of the specified type
|
||||
*/
|
||||
public EventListener[] getListeners(Class listenerType)
|
||||
{
|
||||
return listenerList.getListeners(listenerType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a {@link ChangeListener} that is notified whenever that state
|
||||
* of this <code>Caret</code> changes.
|
||||
*
|
||||
* @param listener the listener to register to this caret
|
||||
*/
|
||||
public void addChangeListener(ChangeListener listener)
|
||||
{
|
||||
listenerList.add(ChangeListener.class, listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a {@link ChangeListener} from the list of registered listeners.
|
||||
*
|
||||
* @param listener the listener to remove
|
||||
*/
|
||||
public void removeChangeListener(ChangeListener listener)
|
||||
{
|
||||
listenerList.remove(ChangeListener.class, listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all registered {@link ChangeListener}s of this <code>Caret</code>.
|
||||
*
|
||||
* @return all registered {@link ChangeListener}s of this <code>Caret</code>
|
||||
*/
|
||||
public ChangeListener[] getChangeListeners()
|
||||
{
|
||||
return (ChangeListener[]) getListeners(ChangeListener.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Notifies all registered {@link ChangeListener}s that the state
|
||||
* of this <code>Caret</code> has changed.
|
||||
*/
|
||||
protected void fireStateChanged()
|
||||
{
|
||||
ChangeListener[] listeners = getChangeListeners();
|
||||
|
@ -262,26 +475,61 @@ public class DefaultCaret extends Rectangle
|
|||
listeners[index].stateChanged(changeEvent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the <code>JTextComponent</code> on which this <code>Caret</code>
|
||||
* is installed.
|
||||
*
|
||||
* @return the <code>JTextComponent</code> on which this <code>Caret</code>
|
||||
* is installed
|
||||
*/
|
||||
protected final JTextComponent getComponent()
|
||||
{
|
||||
return textComponent;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the blink rate of this <code>Caret</code> in milliseconds.
|
||||
* A value of <code>0</code> means that the caret does not blink.
|
||||
*
|
||||
* @return the blink rate of this <code>Caret</code> or <code>0</code> if
|
||||
* this caret does not blink
|
||||
*/
|
||||
public int getBlinkRate()
|
||||
{
|
||||
return blinkRate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the blink rate of this <code>Caret</code> in milliseconds.
|
||||
* A value of <code>0</code> means that the caret does not blink.
|
||||
*
|
||||
* @param rate the new blink rate to set
|
||||
*/
|
||||
public void setBlinkRate(int rate)
|
||||
{
|
||||
blinkRate = rate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current position of this <code>Caret</code> within the
|
||||
* <code>Document</code>.
|
||||
*
|
||||
* @return the current position of this <code>Caret</code> within the
|
||||
* <code>Document</code>
|
||||
*/
|
||||
public int getDot()
|
||||
{
|
||||
return dot;
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves the <code>dot</code> location without touching the
|
||||
* <code>mark</code>. This is used when making a selection.
|
||||
*
|
||||
* @param dot the location where to move the dot
|
||||
*
|
||||
* @see #setDot(int)
|
||||
*/
|
||||
public void moveDot(int dot)
|
||||
{
|
||||
this.dot = dot;
|
||||
|
@ -289,6 +537,15 @@ public class DefaultCaret extends Rectangle
|
|||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the current position of this <code>Caret</code> within the
|
||||
* <code>Document</code>. This also sets the <code>mark</code> to the
|
||||
* new location.
|
||||
*
|
||||
* @param dot the new position to be set
|
||||
*
|
||||
* @see #moveDot(int)
|
||||
*/
|
||||
public void setDot(int dot)
|
||||
{
|
||||
this.dot = dot;
|
||||
|
@ -297,17 +554,37 @@ public class DefaultCaret extends Rectangle
|
|||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns <code>true</code> if this <code>Caret</code> is currently visible,
|
||||
* and <code>false</code> if it is not.
|
||||
*
|
||||
* @return <code>true</code> if this <code>Caret</code> is currently visible,
|
||||
* and <code>false</code> if it is not
|
||||
*/
|
||||
public boolean isVisible()
|
||||
{
|
||||
return visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the visibility state of the caret. <code>true</code> shows the
|
||||
* <code>Caret</code>, <code>false</code> hides it.
|
||||
*
|
||||
* @param v the visibility to set
|
||||
*/
|
||||
public void setVisible(boolean v)
|
||||
{
|
||||
visible = v;
|
||||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the {@link Highlighter.HighlightPainter} that should be used
|
||||
* to paint the selection.
|
||||
*
|
||||
* @return the {@link Highlighter.HighlightPainter} that should be used
|
||||
* to paint the selection
|
||||
*/
|
||||
protected Highlighter.HighlightPainter getSelectionPainter()
|
||||
{
|
||||
return DefaultHighlighter.DefaultPainter;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue