99 lines
2.5 KiB
Java
99 lines
2.5 KiB
Java
package com.minres.scviewer.database.ui.swt.sb;
|
|
|
|
import org.eclipse.swt.SWT;
|
|
import org.eclipse.swt.events.ControlAdapter;
|
|
import org.eclipse.swt.events.ControlEvent;
|
|
import org.eclipse.swt.events.MouseEvent;
|
|
import org.eclipse.swt.events.MouseListener;
|
|
import org.eclipse.swt.events.MouseTrackListener;
|
|
import org.eclipse.swt.graphics.Color;
|
|
import org.eclipse.swt.widgets.Composite;
|
|
import org.eclipse.swt.widgets.Label;
|
|
|
|
|
|
class ClickControl extends ControlAdapter implements ViewComponent, MouseDownActionTimer.TimerAction, MouseListener, MouseTrackListener {
|
|
|
|
private final MouseDownActionTimer mouseDownActionTimer;
|
|
private final ClickAction clickAction;
|
|
private final ButtonClick buttonClick;
|
|
private final Label control;
|
|
private final ImageUpdate imageUpdate;
|
|
|
|
public interface ClickAction extends Runnable {
|
|
void setCoordinates( int x, int y );
|
|
}
|
|
|
|
ClickControl( Composite parent, ClickAction clickAction, int maxExtension ) {
|
|
this.control = new Label( parent, SWT.NONE );
|
|
this.imageUpdate = new ImageUpdate( control, maxExtension );
|
|
this.buttonClick = new ButtonClick();
|
|
this.mouseDownActionTimer = new MouseDownActionTimer( this, buttonClick, control.getDisplay() );
|
|
this.clickAction = clickAction;
|
|
this.control.addMouseTrackListener( this );
|
|
this.control.addMouseListener( this );
|
|
this.control.addControlListener( this );
|
|
}
|
|
|
|
@Override
|
|
public void controlResized( ControlEvent event ) {
|
|
imageUpdate.update();
|
|
}
|
|
|
|
@Override
|
|
public Label getControl() {
|
|
return control;
|
|
}
|
|
|
|
@Override
|
|
public void mouseDown( MouseEvent event ) {
|
|
buttonClick.arm( event );
|
|
clickAction.setCoordinates( event.x, event.y );
|
|
mouseDownActionTimer.activate();
|
|
}
|
|
|
|
@Override
|
|
public void mouseUp( MouseEvent event ) {
|
|
buttonClick.trigger( event, clickAction );
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
clickAction.run();
|
|
}
|
|
|
|
@Override
|
|
public boolean isEnabled() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public void mouseExit( MouseEvent event ) {
|
|
buttonClick.disarm();
|
|
}
|
|
|
|
void setForeground( Color color ) {
|
|
imageUpdate.setForeground( color );
|
|
}
|
|
|
|
Color getForeground() {
|
|
return imageUpdate.getForeground();
|
|
}
|
|
|
|
void setBackground( Color color ) {
|
|
imageUpdate.setBackground( color );
|
|
}
|
|
|
|
Color getBackground() {
|
|
return imageUpdate.getBackground();
|
|
}
|
|
|
|
@Override
|
|
public void mouseEnter( MouseEvent event ) {}
|
|
|
|
@Override
|
|
public void mouseHover( MouseEvent event ) {}
|
|
|
|
@Override
|
|
public void mouseDoubleClick( MouseEvent event ) {}
|
|
}
|