1 /*
2  * Created on 18-dic-2005
3  *
4  * TODO To change the template for this generated file go to
5  * Window - Preferences - Java - Code Style - Code Templates
6  */
7 package org.herac.tuxguitar.gui.actions;
8 
9 import java.util.ArrayList;
10 import java.util.HashMap;
11 import java.util.Iterator;
12 import java.util.List;
13 import java.util.Map;
14 
15 import org.herac.tuxguitar.gui.actions.caret.GoDownAction;
16 import org.herac.tuxguitar.gui.actions.caret.GoLeftAction;
17 import org.herac.tuxguitar.gui.actions.caret.GoRightAction;
18 import org.herac.tuxguitar.gui.actions.caret.GoUpAction;
19 import org.herac.tuxguitar.gui.actions.composition.ChangeClefAction;
20 import org.herac.tuxguitar.gui.actions.composition.ChangeInfoAction;
21 import org.herac.tuxguitar.gui.actions.composition.ChangeKeySignatureAction;
22 import org.herac.tuxguitar.gui.actions.composition.ChangeTempoAction;
23 import org.herac.tuxguitar.gui.actions.composition.ChangeTimeSignatureAction;
24 import org.herac.tuxguitar.gui.actions.composition.ChangeTripletFeelAction;
25 import org.herac.tuxguitar.gui.actions.duration.ChangeDottedDurationAction;
26 import org.herac.tuxguitar.gui.actions.duration.ChangeDoubleDottedDurationAction;
27 import org.herac.tuxguitar.gui.actions.duration.ChangeDivisionTypeAction;
28 import org.herac.tuxguitar.gui.actions.duration.DecrementDurationAction;
29 import org.herac.tuxguitar.gui.actions.duration.IncrementDurationAction;
30 import org.herac.tuxguitar.gui.actions.duration.SetEighthDurationAction;
31 import org.herac.tuxguitar.gui.actions.duration.SetHalfDurationAction;
32 import org.herac.tuxguitar.gui.actions.duration.SetQuarterDurationAction;
33 import org.herac.tuxguitar.gui.actions.duration.SetSixteenthDurationAction;
34 import org.herac.tuxguitar.gui.actions.duration.SetSixtyFourthDurationAction;
35 import org.herac.tuxguitar.gui.actions.duration.SetThirtySecondDurationAction;
36 import org.herac.tuxguitar.gui.actions.duration.SetWholeDurationAction;
37 import org.herac.tuxguitar.gui.actions.edit.RedoAction;
Action(String name, int flags)38 import org.herac.tuxguitar.gui.actions.edit.SetMouseModeEditionAction;
39 import org.herac.tuxguitar.gui.actions.edit.SetMouseModeSelectionAction;
40 import org.herac.tuxguitar.gui.actions.edit.SetNaturalKeyAction;
41 import org.herac.tuxguitar.gui.actions.edit.SetVoice1Action;
42 import org.herac.tuxguitar.gui.actions.edit.SetVoice2Action;
execute(TypedEvent e)43 import org.herac.tuxguitar.gui.actions.edit.UndoAction;
44 import org.herac.tuxguitar.gui.actions.effects.ChangeAccentuatedNoteAction;
process(final TypedEvent e)45 import org.herac.tuxguitar.gui.actions.effects.ChangeBendNoteAction;
46 import org.herac.tuxguitar.gui.actions.effects.ChangeDeadNoteAction;
47 import org.herac.tuxguitar.gui.actions.effects.ChangeFadeInAction;
48 import org.herac.tuxguitar.gui.actions.effects.ChangeGhostNoteAction;
49 import org.herac.tuxguitar.gui.actions.effects.ChangeGraceNoteAction;
50 import org.herac.tuxguitar.gui.actions.effects.ChangeHammerNoteAction;
51 import org.herac.tuxguitar.gui.actions.effects.ChangeHarmonicNoteAction;
52 import org.herac.tuxguitar.gui.actions.effects.ChangeHeavyAccentuatedNoteAction;
53 import org.herac.tuxguitar.gui.actions.effects.ChangePalmMuteAction;
54 import org.herac.tuxguitar.gui.actions.effects.ChangePoppingAction;
55 import org.herac.tuxguitar.gui.actions.effects.ChangeSlappingAction;
56 import org.herac.tuxguitar.gui.actions.effects.ChangeSlideNoteAction;
57 import org.herac.tuxguitar.gui.actions.effects.ChangeStaccatoAction;
58 import org.herac.tuxguitar.gui.actions.effects.ChangeTappingAction;
59 import org.herac.tuxguitar.gui.actions.effects.ChangeTremoloBarAction;
60 import org.herac.tuxguitar.gui.actions.effects.ChangeTremoloPickingAction;
61 import org.herac.tuxguitar.gui.actions.effects.ChangeTrillNoteAction;
62 import org.herac.tuxguitar.gui.actions.effects.ChangeVibratoNoteAction;
63 import org.herac.tuxguitar.gui.actions.file.ExitAction;
64 import org.herac.tuxguitar.gui.actions.file.ExportSongAction;
65 import org.herac.tuxguitar.gui.actions.file.ImportSongAction;
66 import org.herac.tuxguitar.gui.actions.file.NewFileAction;
67 import org.herac.tuxguitar.gui.actions.file.OpenFileAction;
68 import org.herac.tuxguitar.gui.actions.file.OpenURLAction;
69 import org.herac.tuxguitar.gui.actions.file.PrintAction;
70 import org.herac.tuxguitar.gui.actions.file.PrintPreviewAction;
71 import org.herac.tuxguitar.gui.actions.file.SaveAsFileAction;
72 import org.herac.tuxguitar.gui.actions.file.SaveFileAction;
73 import org.herac.tuxguitar.gui.actions.help.ShowAboutAction;
74 import org.herac.tuxguitar.gui.actions.help.ShowDocAction;
75 import org.herac.tuxguitar.gui.actions.insert.InsertChordAction;
76 import org.herac.tuxguitar.gui.actions.insert.InsertTextAction;
77 import org.herac.tuxguitar.gui.actions.insert.RepeatAlternativeAction;
78 import org.herac.tuxguitar.gui.actions.insert.RepeatCloseAction;
79 import org.herac.tuxguitar.gui.actions.insert.RepeatOpenAction;
80 import org.herac.tuxguitar.gui.actions.layout.SetChordDiagramEnabledAction;
81 import org.herac.tuxguitar.gui.actions.layout.SetChordNameEnabledAction;
82 import org.herac.tuxguitar.gui.actions.layout.SetCompactViewAction;
83 import org.herac.tuxguitar.gui.actions.layout.SetLinearLayoutAction;
84 import org.herac.tuxguitar.gui.actions.layout.SetMultitrackViewAction;
85 import org.herac.tuxguitar.gui.actions.layout.SetPageLayoutAction;
86 import org.herac.tuxguitar.gui.actions.layout.SetScoreEnabledAction;
87 import org.herac.tuxguitar.gui.actions.layout.SetTablatureEnabledAction;
88 import org.herac.tuxguitar.gui.actions.marker.AddMarkerAction;
89 import org.herac.tuxguitar.gui.actions.marker.GoFirstMarkerAction;
90 import org.herac.tuxguitar.gui.actions.marker.GoLastMarkerAction;
91 import org.herac.tuxguitar.gui.actions.marker.GoNextMarkerAction;
getFlags()92 import org.herac.tuxguitar.gui.actions.marker.GoPreviousMarkerAction;
93 import org.herac.tuxguitar.gui.actions.marker.ListMarkersAction;
94 import org.herac.tuxguitar.gui.actions.measure.AddMeasureAction;
95 import org.herac.tuxguitar.gui.actions.measure.CleanMeasureAction;
getSongManager()96 import org.herac.tuxguitar.gui.actions.measure.CopyMeasureAction;
97 import org.herac.tuxguitar.gui.actions.measure.GoFirstMeasureAction;
98 import org.herac.tuxguitar.gui.actions.measure.GoLastMeasureAction;
99 import org.herac.tuxguitar.gui.actions.measure.GoNextMeasureAction;
getEditor()100 import org.herac.tuxguitar.gui.actions.measure.GoPreviousMeasureAction;
101 import org.herac.tuxguitar.gui.actions.measure.PasteMeasureAction;
102 import org.herac.tuxguitar.gui.actions.measure.RemoveMeasureAction;
103 import org.herac.tuxguitar.gui.actions.note.ChangeNoteAction;
getName()104 import org.herac.tuxguitar.gui.actions.note.ChangeTiedNoteAction;
105 import org.herac.tuxguitar.gui.actions.note.ChangeVelocityAction;
106 import org.herac.tuxguitar.gui.actions.note.CleanBeatAction;
107 import org.herac.tuxguitar.gui.actions.note.DecrementNoteSemitoneAction;
isKeyBindingAvailable()108 import org.herac.tuxguitar.gui.actions.note.IncrementNoteSemitoneAction;
109 import org.herac.tuxguitar.gui.actions.note.InsertNoteAction;
110 import org.herac.tuxguitar.gui.actions.note.MoveBeatsCustomAction;
111 import org.herac.tuxguitar.gui.actions.note.MoveBeatsLeftAction;
updateTablature()112 import org.herac.tuxguitar.gui.actions.note.MoveBeatsRightAction;
113 import org.herac.tuxguitar.gui.actions.note.RemoveNoteAction;
114 import org.herac.tuxguitar.gui.actions.note.RemoveUnusedVoiceAction;
115 import org.herac.tuxguitar.gui.actions.note.SetStrokeDownAction;
fireUpdate(int measureNumber)116 import org.herac.tuxguitar.gui.actions.note.SetStrokeUpAction;
117 import org.herac.tuxguitar.gui.actions.note.SetVoiceAutoAction;
118 import org.herac.tuxguitar.gui.actions.note.SetVoiceDownAction;
119 import org.herac.tuxguitar.gui.actions.note.SetVoiceUpAction;
addUndoableEdit(UndoableEdit anEdit)120 import org.herac.tuxguitar.gui.actions.note.ShiftNoteDownAction;
121 import org.herac.tuxguitar.gui.actions.note.ShiftNoteUpAction;
122 import org.herac.tuxguitar.gui.actions.settings.EditConfigAction;
123 import org.herac.tuxguitar.gui.actions.settings.EditKeyBindingsAction;
124 import org.herac.tuxguitar.gui.actions.settings.EditPluginsAction;
125 import org.herac.tuxguitar.gui.actions.system.DisposeAction;
126 import org.herac.tuxguitar.gui.actions.tools.ScaleAction;
127 import org.herac.tuxguitar.gui.actions.tools.TGBrowserAction;
128 import org.herac.tuxguitar.gui.actions.tools.TransposeAction;
129 import org.herac.tuxguitar.gui.actions.track.AddTrackAction;
130 import org.herac.tuxguitar.gui.actions.track.CloneTrackAction;
131 import org.herac.tuxguitar.gui.actions.track.EditLyricsAction;
132 import org.herac.tuxguitar.gui.actions.track.GoFirstTrackAction;
133 import org.herac.tuxguitar.gui.actions.track.GoLastTrackAction;
134 import org.herac.tuxguitar.gui.actions.track.GoNextTrackAction;
135 import org.herac.tuxguitar.gui.actions.track.GoPreviousTrackAction;
136 import org.herac.tuxguitar.gui.actions.track.GoToTrackAction;
137 import org.herac.tuxguitar.gui.actions.track.MoveTrackDownAction;
138 import org.herac.tuxguitar.gui.actions.track.MoveTrackUpAction;
139 import org.herac.tuxguitar.gui.actions.track.RemoveTrackAction;
140 import org.herac.tuxguitar.gui.actions.track.TrackPropertiesAction;
141 import org.herac.tuxguitar.gui.actions.transport.TransportMetronomeAction;
142 import org.herac.tuxguitar.gui.actions.transport.TransportModeAction;
143 import org.herac.tuxguitar.gui.actions.transport.TransportPlayAction;
144 import org.herac.tuxguitar.gui.actions.transport.TransportSetLoopEHeaderAction;
145 import org.herac.tuxguitar.gui.actions.transport.TransportSetLoopSHeaderAction;
146 import org.herac.tuxguitar.gui.actions.transport.TransportStopAction;
147 import org.herac.tuxguitar.gui.actions.view.ShowFretBoardAction;
148 import org.herac.tuxguitar.gui.actions.view.ShowMatrixAction;
149 import org.herac.tuxguitar.gui.actions.view.ShowMixerAction;
150 import org.herac.tuxguitar.gui.actions.view.ShowPianoAction;
151 import org.herac.tuxguitar.gui.actions.view.ShowTransportAction;
152 
153 /**
154  * @author julian
155  *
156  * TODO To change the template for this generated type comment go to
157  * Window - Preferences - Java - Code Style - Code Templates
158  */
159 public class ActionManager {
160 
161 	private Map actions;
162 
163 	public ActionManager(){
164 		this.actions = new HashMap();
165 		this.init();
166 	}
167 
168 	public void init(){
169 		//file actions
170 		addAction(new NewFileAction());
171 		addAction(new OpenFileAction());
172 		addAction(new SaveFileAction());
173 		addAction(new SaveAsFileAction());
174 		addAction(new ImportSongAction());
175 		addAction(new ExportSongAction());
176 		addAction(new PrintAction());
177 		addAction(new PrintPreviewAction());
178 		addAction(new OpenURLAction());
179 		addAction(new ExitAction());
180 
181 		//edit actions
182 		addAction(new UndoAction());
183 		addAction(new RedoAction());
184 		addAction(new SetMouseModeSelectionAction());
185 		addAction(new SetMouseModeEditionAction());
186 		addAction(new SetNaturalKeyAction());
187 		addAction(new SetVoice1Action());
188 		addAction(new SetVoice2Action());
189 
190 		//layout actions
191 		addAction(new SetPageLayoutAction());
192 		addAction(new SetLinearLayoutAction());
193 		addAction(new SetMultitrackViewAction());
194 		addAction(new SetScoreEnabledAction());
195 		addAction(new SetTablatureEnabledAction());
196 		addAction(new SetCompactViewAction());
197 		addAction(new SetChordNameEnabledAction());
198 		addAction(new SetChordDiagramEnabledAction());
199 
200 		//view actions
201 		addAction(new ShowFretBoardAction());
202 		addAction(new ShowPianoAction());
203 		addAction(new ShowMixerAction());
204 		addAction(new ShowTransportAction());
205 		addAction(new ShowMatrixAction());
206 
207 		//composition actions
208 		addAction(new ChangeTimeSignatureAction());
209 		addAction(new ChangeTempoAction());
210 		addAction(new ChangeClefAction());
211 		addAction(new ChangeKeySignatureAction());
212 		addAction(new ChangeTripletFeelAction());
213 		addAction(new ChangeInfoAction());
214 
215 		//track actions
216 		addAction(new AddTrackAction());
217 		addAction(new RemoveTrackAction());
218 		addAction(new CloneTrackAction());
219 		addAction(new GoFirstTrackAction());
220 		addAction(new GoLastTrackAction());
221 		addAction(new GoNextTrackAction());
222 		addAction(new GoToTrackAction());
223 		addAction(new GoPreviousTrackAction());
224 		addAction(new MoveTrackUpAction());
225 		addAction(new MoveTrackDownAction());
226 		addAction(new EditLyricsAction());
227 		addAction(new TrackPropertiesAction());
228 
229 		//measure actions
230 		addAction(new AddMeasureAction());
231 		addAction(new RemoveMeasureAction());
232 		addAction(new CopyMeasureAction());
233 		addAction(new PasteMeasureAction());
234 		addAction(new GoFirstMeasureAction());
235 		addAction(new GoLastMeasureAction());
236 		addAction(new GoNextMeasureAction());
237 		addAction(new GoPreviousMeasureAction());
238 		addAction(new CleanMeasureAction());
239 
240 		//note actions
241 		addAction(new ChangeNoteAction());
242 		addAction(new InsertNoteAction());
243 		addAction(new RemoveNoteAction());
244 		addAction(new RemoveUnusedVoiceAction());
245 		addAction(new CleanBeatAction());
246 		addAction(new ChangeTiedNoteAction());
247 		addAction(new ChangeVelocityAction());
248 		addAction(new ShiftNoteUpAction());
249 		addAction(new ShiftNoteDownAction());
250 		addAction(new IncrementNoteSemitoneAction());
251 		addAction(new DecrementNoteSemitoneAction());
252 		addAction(new SetStrokeUpAction());
253 		addAction(new SetStrokeDownAction());
254 		addAction(new MoveBeatsRightAction());
255 		addAction(new MoveBeatsLeftAction());
256 		addAction(new MoveBeatsCustomAction());
257 
258 		//duration actions
259 		addAction(new SetWholeDurationAction());
260 		addAction(new SetHalfDurationAction());
261 		addAction(new SetQuarterDurationAction());
262 		addAction(new SetEighthDurationAction());
263 		addAction(new SetSixteenthDurationAction());
264 		addAction(new SetThirtySecondDurationAction());
265 		addAction(new SetSixtyFourthDurationAction());
266 		addAction(new ChangeDottedDurationAction());
267 		addAction(new ChangeDoubleDottedDurationAction());
268 		addAction(new ChangeDivisionTypeAction());
269 		addAction(new IncrementDurationAction());
270 		addAction(new DecrementDurationAction());
271 
272 		//insert actions
273 		addAction(new RepeatOpenAction());
274 		addAction(new RepeatCloseAction());
275 		addAction(new RepeatAlternativeAction());
276 		addAction(new InsertChordAction());
277 		addAction(new InsertTextAction());
278 
279 		//note effects action
280 		addAction(new ChangeVibratoNoteAction());
281 		addAction(new ChangeBendNoteAction());
282 		addAction(new ChangeDeadNoteAction());
283 		addAction(new ChangeSlideNoteAction());
284 		addAction(new ChangeHammerNoteAction());
285 		addAction(new ChangeGhostNoteAction());
286 		addAction(new ChangeAccentuatedNoteAction());
287 		addAction(new ChangeHeavyAccentuatedNoteAction());
288 		addAction(new ChangeHarmonicNoteAction());
289 		addAction(new ChangeGraceNoteAction());
290 		addAction(new ChangeTrillNoteAction());
291 		addAction(new ChangeTremoloPickingAction());
292 		addAction(new ChangePalmMuteAction());
293 		addAction(new ChangeStaccatoAction());
294 		addAction(new ChangeTappingAction());
295 		addAction(new ChangeSlappingAction());
296 		addAction(new ChangePoppingAction());
297 		addAction(new ChangeTremoloBarAction());
298 		addAction(new ChangeFadeInAction());
299 		addAction(new SetVoiceAutoAction());
300 		addAction(new SetVoiceUpAction());
301 		addAction(new SetVoiceDownAction());
302 
303 		//marker actions
304 		addAction(new AddMarkerAction());
305 		addAction(new ListMarkersAction());
306 		addAction(new GoPreviousMarkerAction());
307 		addAction(new GoNextMarkerAction());
308 		addAction(new GoFirstMarkerAction());
309 		addAction(new GoLastMarkerAction());
310 
311 		//player actions
312 		addAction(new TransportPlayAction());
313 		addAction(new TransportStopAction());
314 		addAction(new TransportMetronomeAction());
315 		addAction(new TransportModeAction());
316 		addAction(new TransportSetLoopSHeaderAction());
317 		addAction(new TransportSetLoopEHeaderAction());
318 
319 		//setting actions
320 		addAction(new EditPluginsAction());
321 		addAction(new EditConfigAction());
322 		addAction(new EditKeyBindingsAction());
323 
324 		//caret actions
325 		addAction(new GoRightAction());
326 		addAction(new GoLeftAction());
327 		addAction(new GoUpAction());
328 		addAction(new GoDownAction());
329 
330 		//help actions
331 		addAction(new ShowDocAction());
332 		addAction(new ShowAboutAction());
333 
334 		//tools
335 		addAction(new TransposeAction() );
336 		addAction(new ScaleAction());
337 		addAction(new TGBrowserAction());
338 
339 		//exit
340 		addAction(new DisposeAction());
341 	}
342 
343 	public void addAction(Action action){
344 		this.actions.put(action.getName(),action);
345 	}
346 
347 	public void removeAction(String name){
348 		this.actions.remove(name);
349 	}
350 
351 	public Action getAction(String name){
352 		return (Action)this.actions.get(name);
353 	}
354 
355 	public List getAvailableKeyBindingActions(){
356 		List availableKeyBindingActions = new ArrayList();
357 		Iterator it = this.actions.keySet().iterator();
358 		while(it.hasNext()){
359 			String actionName = (String)it.next();
360 			if(getAction(actionName).isKeyBindingAvailable()){
361 				availableKeyBindingActions.add(actionName);
362 			}
363 		}
364 		return availableKeyBindingActions;
365 	}
366 }
367