/*
* Copyright 2003-2010 Tufts University Licensed under the
* Educational Community License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may
* obtain a copy of the License at
*
* http://www.osedu.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS IS"
* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package tufts.vue.gui;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComponent;
public class TimedASComponent extends JComponent{
private Autoscroller autoscroller;
public void addMouseListener(MouseListener ml)
{
super.addMouseListener(ml);
}
public void setAutoscrolls(boolean autoscrolls) {
if (autoscrolls) {
if (autoscroller == null) {
autoscroller = new Autoscroller(this);
}
} else {
if (autoscroller != null) {
autoscroller.dispose();
autoscroller = null;
}
}
}
public boolean getAutoscrolls() {
return autoscroller != null;
}
public void superProcessMouseMotionEvent(MouseEvent e) {
super.processMouseMotionEvent(e);
}
public void processMouseMotionEvent(MouseEvent e)
{
boolean dispatch = true;
if (autoscroller != null) {
if (e.getID() == MouseEvent.MOUSE_DRAGGED) {
// We don't want to do the drags when the mouse moves if we're
// autoscrolling. It makes it feel spastic.
dispatch = !autoscroller.timer.isRunning();
autoscroller.mouseDragged(e);
}
}
if (dispatch) {
super.processMouseMotionEvent(e);
}
}
}