1
|
1 package de.mpg.mpiwg.itgroup.digilib.manipulator.extensions;
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
7 import org.eclipse.swt.SWT;
|
|
8 import org.eclipse.swt.events.MouseEvent;
|
|
9 import org.eclipse.swt.events.MouseListener;
|
|
10 import org.eclipse.swt.graphics.Color;
|
|
11 import org.eclipse.swt.graphics.GC;
|
|
12 import org.eclipse.swt.graphics.Point;
|
|
13 import org.eclipse.swt.widgets.Canvas;
|
|
14 import org.eclipse.swt.widgets.Label;
|
|
15 import org.eclipse.swt.graphics.Device;
|
|
16
|
|
17 import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImage;
|
|
18 import de.mpg.mpiwg.itgroup.digilib.digiImage.DigiImageController;
|
|
19 import de.mpg.mpiwg.itgroup.digilib.plugin.editors.DigilibLinkEditorObservable;
|
|
20
|
|
21 public class RectangleListener implements MouseListener {
|
|
22 static int FIRST_CLICK=1;
|
|
23 static int SECOND_CLICK=2;
|
|
24 static int NO_CLICK=0;
|
|
25 int status=NO_CLICK;
|
|
26 private Label label;
|
|
27 private Point firstPoint;
|
|
28 private DigiImageController dc;
|
|
29
|
|
30
|
|
31 private RectangleListener() {
|
|
32
|
|
33 }
|
|
34
|
|
35 public RectangleListener(DigiImageController dc,Label label){
|
|
36 this.label =label;
|
|
37 this.dc=dc;
|
|
38 }
|
|
39 public void reset(){
|
|
40 status=0;
|
|
41 }
|
|
42 public void mouseDoubleClick(MouseEvent e) {
|
|
43 // TODO Auto-generated method stub
|
|
44
|
|
45 }
|
|
46
|
|
47 public void mouseDown(MouseEvent e) {
|
|
48 // TODO Auto-generated method stub
|
|
49
|
|
50 }
|
|
51
|
|
52 public void mouseUp(MouseEvent e) {
|
|
53 if (status==NO_CLICK){
|
|
54 handleFirstClick(e);
|
|
55 } else if (status==FIRST_CLICK){
|
|
56 handleSecondClick(e);
|
|
57 }
|
|
58
|
|
59 }
|
|
60
|
|
61 private void handleSecondClick(MouseEvent e) {
|
|
62 //Canvas canvas = new Canvas(label.getParent(),SWT.NO_BACKGROUND);
|
|
63
|
|
64 GC gc = new GC(label.getImage());
|
|
65
|
|
66 gc.setForeground(new Color(label.getDisplay(),255,0,0));
|
|
67
|
|
68 gc.drawRectangle(firstPoint.x, firstPoint.y, e.x-firstPoint.x, e.y-firstPoint.y);
|
|
69 gc.dispose();
|
|
70 label.redraw();
|
|
71 status=SECOND_CLICK;
|
|
72 dc.zoomArea(firstPoint.x,firstPoint.y,e.x,e.y);
|
|
73 dc.digiImage.getLabel().removeMouseListener(this);
|
|
74 DigilibLinkEditorObservable.INSTANCE.setCursorStatus(SWT.CURSOR_ARROW);
|
|
75 DigilibLinkEditorObservable.INSTANCE.imageHasChanged(dc.digiImage);
|
|
76
|
|
77 }
|
|
78
|
|
79 private void handleFirstClick(MouseEvent e) {
|
|
80 //Canvas canvas = new Canvas(label.getParent(),SWT.NO_BACKGROUND);
|
|
81
|
|
82 GC gc = new GC(label.getImage());
|
|
83
|
|
84 gc.setForeground(new Color(label.getDisplay(),255,0,0));
|
|
85 firstPoint = new Point(e.x,e.y);
|
|
86 gc.drawOval(e.x, e.y, 10, 10);
|
|
87 gc.dispose();
|
|
88 status=FIRST_CLICK;
|
|
89 label.redraw();
|
|
90 DigilibLinkEditorObservable.INSTANCE.setCursorStatus(SWT.CURSOR_CROSS);
|
|
91 }
|
|
92
|
|
93
|
|
94 }
|