1
package org.herac.tuxguitar.gui.editors.tab.edit;
3
import org.eclipse.swt.events.MouseEvent;
4
import org.eclipse.swt.events.MouseListener;
5
import org.eclipse.swt.events.MouseMoveListener;
6
import org.eclipse.swt.events.MouseTrackListener;
7
import org.herac.tuxguitar.gui.TuxGuitar;
8
import org.herac.tuxguitar.gui.editors.tab.MeasureComponent;
9
import org.herac.tuxguitar.gui.editors.tab.MeasureCoords;
10
import org.herac.tuxguitar.gui.editors.tab.SongTrackCoords;
11
import org.herac.tuxguitar.gui.editors.tab.Tablature;
12
import org.herac.tuxguitar.gui.system.config.ConfigKeys;
13
import org.herac.tuxguitar.song.models.InstrumentString;
15
public class EditorKit implements MouseListener,MouseMoveListener,MouseTrackListener{
16
public static final int MOUSE_MODE_SELECTION = 1;
18
public static final int MOUSE_MODE_EDITION = 2;
20
private int mouseMode;
21
private boolean natural;
22
private Tablature tablature;
23
private MouseKit mouseKit;
25
public EditorKit(Tablature tablature){
26
this.tablature = tablature;
27
this.mouseKit = new MouseKit(this);
28
this.tablature.addMouseMoveListener(this);
29
this.tablature.addMouseListener(this);
30
this.tablature.addMouseTrackListener(this);
34
private void setDefaults(){
35
this.setMouseMode(TuxGuitar.instance().getConfig().getIntConfigValue(ConfigKeys.EDITOR_MOUSE_MODE,MOUSE_MODE_EDITION));
36
this.setNatural(TuxGuitar.instance().getConfig().getBooleanConfigValue(ConfigKeys.EDITOR_NATURAL_KEY_MODE,true));
39
public int getMouseMode() {
44
public void setMouseMode(int mouseMode) {
45
this.mouseMode = mouseMode;
48
public boolean isNatural() {
52
public void setNatural(boolean natural) {
53
this.natural = natural;
57
public Tablature getTablature() {
62
public void tryBack(){
63
this.mouseKit.tryBack();
67
public boolean select(int x, int y) {
69
SongTrackCoords trackCoords = getTrackCoords(y);
70
if (trackCoords != null) {
71
MeasureCoords measureCoords = getMeasureCoords(trackCoords, x,y);
72
if (measureCoords != null) {
73
MeasureComponent measureComponent = getMeasureComponent(measureCoords, x);
74
InstrumentString instrumentString = getMeasureString(measureCoords, y);
75
if (measureComponent != null) {
76
int string = (instrumentString != null)?instrumentString.getNumber():getTablature().getCaret().getSelectedString().getNumber();
77
getTablature().getCaret().moveTo(trackCoords, measureCoords, measureComponent, string);
86
public SongTrackCoords getTrackCoords(int y) {
87
return getTablature().getSongCoords().getTrackAt(y/*, -getTablature().getVerticalBar().getSelection()*/);
90
public MeasureCoords getMeasureCoords(SongTrackCoords trackCoords, int x,int y) {
91
return trackCoords.getMeasureAt(x,y/*, -getTablature().getHorizontalBar().getSelection(),-getTablature().getVerticalBar().getSelection()*/);
94
public MeasureComponent getMeasureComponent(MeasureCoords measureCoords, int x) {
95
return measureCoords.getComponentAt(x);
98
public InstrumentString getMeasureString(MeasureCoords measureCoords, int y) {
99
return measureCoords.getStringAt(y);
104
public void mouseDown(MouseEvent e) {
106
//if(select(e.x, e.y)){
107
//TuxGuitar.instance().redraw();
108
//TuxGuitar.instance().updateCache(true);
112
public void mouseUp(MouseEvent e) {
113
if(select(e.x, e.y)){
114
TuxGuitar.instance().redraw();
115
TuxGuitar.instance().updateCache(true);
116
if(!TuxGuitar.instance().getPlayer().isRunning() && getTablature().getViewLayout().isScoreEnabled() && getMouseMode() == MOUSE_MODE_EDITION){
117
//if(getTablature().getViewLayout().isScoreEnabled() && getMouseMode() == MOUSE_MODE_EDITION && select(e.x, e.y)){
118
this.mouseKit.mouseUp(e);
124
public void mouseMove(MouseEvent e) {
125
if(!TuxGuitar.instance().getPlayer().isRunning()){
126
if(getTablature().getViewLayout().isScoreEnabled() && getMouseMode() == MOUSE_MODE_EDITION){
127
this.mouseKit.mouseMove(e);
132
public void mouseExit(MouseEvent e) {
133
if(!TuxGuitar.instance().getPlayer().isRunning()){
134
if(getTablature().getViewLayout().isScoreEnabled() && getMouseMode() == MOUSE_MODE_EDITION){
135
this.mouseKit.mouseExit(e);
140
public void mouseDoubleClick(MouseEvent e) {
142
public void mouseEnter(MouseEvent e) {
144
public void mouseHover(MouseEvent e) {