/[svn]/jsampler/trunk/src/org/jsampler/view/classic/A4n.java
ViewVC logotype

Annotation of /jsampler/trunk/src/org/jsampler/view/classic/A4n.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 842 - (hide annotations) (download)
Thu Mar 16 18:08:34 2006 UTC (18 years, 1 month ago) by iliev
File size: 18852 byte(s)
Updating to version 0.2a

1 iliev 787 /*
2     * JSampler - a java front-end for LinuxSampler
3     *
4     * Copyright (C) 2005 Grigor Kirilov Iliev
5     *
6     * This file is part of JSampler.
7     *
8     * JSampler is free software; you can redistribute it and/or modify
9     * it under the terms of the GNU General Public License version 2
10     * as published by the Free Software Foundation.
11     *
12     * JSampler is distributed in the hope that it will be useful,
13     * but WITHOUT ANY WARRANTY; without even the implied warranty of
14     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15     * GNU General Public License for more details.
16     *
17     * You should have received a copy of the GNU General Public License
18     * along with JSampler; if not, write to the Free Software
19     * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20     * MA 02111-1307 USA
21     */
22    
23     package org.jsampler.view.classic;
24    
25     import java.awt.MediaTracker;
26    
27     import java.awt.event.ActionEvent;
28    
29     import java.beans.PropertyChangeEvent;
30     import java.beans.PropertyChangeListener;
31    
32     import java.net.URL;
33    
34     import java.util.logging.Level;
35    
36     import javax.swing.AbstractAction;
37     import javax.swing.Action;
38     import javax.swing.ImageIcon;
39     import javax.swing.JOptionPane;
40    
41     import org.jsampler.CC;
42     import org.jsampler.HF;
43     import org.jsampler.JSampler;
44    
45     import org.jsampler.view.JSChannel;
46     import org.jsampler.view.JSChannelsPane;
47     import org.jsampler.view.JSMainFrame;
48    
49     import net.sf.juife.event.TaskEvent;
50     import net.sf.juife.event.TaskListener;
51    
52     import static org.jsampler.view.classic.ClassicI18n.i18n;
53    
54    
55     /**
56     * This class provides an <code>Action</code> instances performing all needed tasks.
57     * @author Grigor Iliev
58     */
59     public class A4n {
60 iliev 842 private static boolean
61     verifyConnection() {
62     if(!CC.getClient().isConnected()) {
63     HF.showErrorMessage(i18n.getError("notConnected"));
64     return false;
65     }
66    
67     return true;
68     }
69    
70 iliev 787 public final static Action connect = new Connect();
71    
72     private static class Connect extends AbstractAction {
73     Connect() {
74     super(i18n.getMenuLabel("actions.connect"));
75    
76     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttConnect"));
77     }
78    
79     public void
80     actionPerformed(ActionEvent e) {
81     CC.initSamplerModel();
82     }
83     }
84    
85     public final static Action samplerInfo = new SamplerInfo();
86    
87     private static class SamplerInfo extends AbstractAction {
88     SamplerInfo() {
89     super(i18n.getMenuLabel("actions.samplerInfo"));
90    
91     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttSamplerInfo"));
92    
93     try {
94     URL url = ClassLoader.getSystemClassLoader().getResource (
95     "org/jsampler/view/classic/res/icons/toolbar/About24.gif"
96     );
97    
98     ImageIcon icon = new ImageIcon(url);
99     if(icon.getImageLoadStatus() == MediaTracker.COMPLETE)
100     putValue(Action.SMALL_ICON, icon);
101 iliev 842 } catch(Exception x) {
102     CC.getLogger().log(Level.INFO, HF.getErrorMessage(x), x);
103     }
104 iliev 787 }
105    
106     public void
107     actionPerformed(ActionEvent e) {
108     new SamplerInfoDlg(CC.getMainFrame()).setVisible(true);
109     }
110     }
111    
112     public final static Action refresh = new Refresh();
113    
114     private static class Refresh extends AbstractAction {
115     Refresh() {
116     super(i18n.getMenuLabel("actions.refresh"));
117    
118     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttRefresh"));
119    
120     try {
121     URL url = ClassLoader.getSystemClassLoader().getResource (
122     "org/jsampler/view/classic/res/icons/toolbar/Refresh24.gif"
123     );
124    
125     ImageIcon icon = new ImageIcon(url);
126     if(icon.getImageLoadStatus() == MediaTracker.COMPLETE)
127     putValue(Action.SMALL_ICON, icon);
128 iliev 842 } catch(Exception x) {
129     CC.getLogger().log(Level.INFO, HF.getErrorMessage(x), x);
130     }
131 iliev 787 }
132    
133     public void
134     actionPerformed(ActionEvent e) { CC.initSamplerModel(); }
135     }
136    
137     public final static Action resetSampler = new Reset();
138    
139     private static class Reset extends AbstractAction {
140     Reset() {
141     super(i18n.getMenuLabel("actions.resetSampler"));
142    
143     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttResetSampler"));
144     }
145    
146     public void
147     actionPerformed(ActionEvent e) {
148     CC.getTaskQueue().add(new org.jsampler.task.ResetSampler());
149     }
150     }
151    
152     public final static Action addMidiDevice = new AddMidiDevice();
153    
154     private static class AddMidiDevice extends AbstractAction {
155     AddMidiDevice() {
156     super("");
157    
158     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttAddMidiDevice"));
159    
160     try {
161     URL url = ClassLoader.getSystemClassLoader().getResource (
162     "org/jsampler/view/classic/res/icons/New16.gif"
163     );
164    
165     ImageIcon icon = new ImageIcon(url);
166     if(icon.getImageLoadStatus() == MediaTracker.COMPLETE)
167     putValue(Action.SMALL_ICON, icon);
168 iliev 842 } catch(Exception x) {
169     CC.getLogger().log(Level.INFO, HF.getErrorMessage(x), x);
170     }
171 iliev 787 }
172    
173     public void
174     actionPerformed(ActionEvent e) {
175 iliev 842 if(!verifyConnection()) return;
176 iliev 787 new NewMidiDeviceDlg(CC.getMainFrame()).setVisible(true);
177     }
178     }
179    
180     public final static Action addAudioDevice = new AddAudioDevice();
181    
182     private static class AddAudioDevice extends AbstractAction {
183     AddAudioDevice() {
184     super("");
185    
186     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttAddAudioDevice"));
187    
188     try {
189     URL url = ClassLoader.getSystemClassLoader().getResource (
190     "org/jsampler/view/classic/res/icons/New16.gif"
191     );
192    
193     ImageIcon icon = new ImageIcon(url);
194     if(icon.getImageLoadStatus() == MediaTracker.COMPLETE)
195     putValue(Action.SMALL_ICON, icon);
196 iliev 842 } catch(Exception x) {
197     CC.getLogger().log(Level.INFO, HF.getErrorMessage(x), x);
198     }
199 iliev 787 }
200    
201     public void
202     actionPerformed(ActionEvent e) {
203 iliev 842 if(!verifyConnection()) return;
204 iliev 787 new NewAudioDeviceDlg(CC.getMainFrame()).setVisible(true);
205     }
206     }
207    
208     // EDIT
209     public final static Action preferences = new Preferences();
210    
211     private static class Preferences extends AbstractAction {
212     Preferences() {
213     super(i18n.getMenuLabel("edit.preferences"));
214    
215     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttPrefs"));
216    
217     try {
218     URL url = ClassLoader.getSystemClassLoader().getResource (
219     "org/jsampler/view/classic/res/icons/toolbar/Preferences24.gif"
220     );
221    
222     ImageIcon icon = new ImageIcon(url);
223     if(icon.getImageLoadStatus() == MediaTracker.COMPLETE)
224     putValue(Action.SMALL_ICON, icon);
225 iliev 842 } catch(Exception x) {
226     CC.getLogger().log(Level.INFO, HF.getErrorMessage(x), x);
227     }
228 iliev 787 }
229    
230     public void
231     actionPerformed(ActionEvent e) { new PrefsDlg(CC.getMainFrame()).setVisible(true); }
232     }
233    
234     // CHANNELS
235     public final static Action newChannel = new NewChannel();
236     public final static Action newChannelWizard = new NewChannelWizard();
237     public final static Action duplicateChannels = new DuplicateChannels();
238    
239     public final static Action moveChannelsOnTop = new MoveChannelsOnTop();
240     public final static Action moveChannelsUp = new MoveChannelsUp();
241     public final static Action moveChannelsDown = new MoveChannelsDown();
242     public final static Action moveChannelsAtBottom = new MoveChannelsAtBottom();
243    
244     public final static Action selectAllChannels = new SelectAllChannels();
245     public final static Action deselectChannels = new DeselectChannels();
246    
247     public final static Action removeChannels = new RemoveChannels();
248    
249    
250     private static class NewChannel extends AbstractAction {
251     NewChannel() {
252     super(i18n.getMenuLabel("channels.new"));
253    
254     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttNewChannel"));
255    
256     try {
257     URL url = ClassLoader.getSystemClassLoader().getResource (
258     "org/jsampler/view/classic/res/icons/toolbar/New24.gif"
259     );
260    
261     ImageIcon icon = new ImageIcon(url);
262     if(icon.getImageLoadStatus() == MediaTracker.COMPLETE)
263     putValue(Action.SMALL_ICON, icon);
264 iliev 842 } catch(Exception x) {
265     CC.getLogger().log(Level.INFO, HF.getErrorMessage(x), x);
266     }
267 iliev 787 }
268    
269     public void
270 iliev 842 actionPerformed(ActionEvent e) {
271     if(!verifyConnection()) return;
272     CC.getSamplerModel().createChannel();
273     }
274 iliev 787 }
275    
276     private static class NewChannelWizard extends AbstractAction {
277     NewChannelWizard() {
278     super(i18n.getMenuLabel("channels.wizard"));
279    
280     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttNewChannelWizard"));
281     }
282    
283     public void
284     actionPerformed(ActionEvent e) {
285 iliev 842 new org.jsampler.view.classic.NewChannelWizard().showWizard();
286 iliev 787 }
287     }
288    
289     private static class DuplicateChannels extends AbstractAction {
290     DuplicateChannels() {
291     super(i18n.getMenuLabel("channels.duplicate"));
292    
293     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttDuplicateChannels"));
294    
295     try {
296     URL url = ClassLoader.getSystemClassLoader().getResource (
297     "org/jsampler/view/classic/res/icons/toolbar/Copy24.gif"
298     );
299    
300     ImageIcon icon = new ImageIcon(url);
301     if(icon.getImageLoadStatus() == MediaTracker.COMPLETE)
302     putValue(Action.SMALL_ICON, icon);
303 iliev 842 } catch(Exception x) {
304     CC.getLogger().log(Level.INFO, HF.getErrorMessage(x), x);
305     }
306 iliev 787
307     setEnabled(false);
308     }
309    
310     public void
311     actionPerformed(ActionEvent e) {
312     JSChannel[] channels =
313     CC.getMainFrame().getSelectedChannelsPane().getSelectedChannels();
314    
315     if(channels.length > 2) {
316     if(!HF.showYesNoDialog (
317     CC.getMainFrame(),
318     i18n.getMessage("A4n.duplicateChannels?")
319     )) return;
320     }
321    
322     CC.getTaskQueue().add (
323     new org.jsampler.task.DuplicateChannels(channels)
324     );
325     }
326     }
327    
328     private static class MoveChannelsOnTop extends AbstractAction {
329     MoveChannelsOnTop() {
330     super(i18n.getMenuLabel("channels.MoveOnTop"));
331    
332     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttMoveChannelsOnTop"));
333     setEnabled(false);
334     }
335    
336     public void
337     actionPerformed(ActionEvent e) {
338     ChannelsPane p = (ChannelsPane)CC.getMainFrame().getSelectedChannelsPane();
339     p.moveSelectedChannelsOnTop();
340     }
341     }
342    
343     private static class MoveChannelsUp extends AbstractAction {
344     MoveChannelsUp() {
345     super(i18n.getMenuLabel("channels.MoveUp"));
346    
347     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttMoveChannelsUp"));
348    
349     try {
350     URL url = ClassLoader.getSystemClassLoader().getResource (
351     "org/jsampler/view/classic/res/icons/toolbar/Up24.gif"
352     );
353    
354     ImageIcon icon = new ImageIcon(url);
355     if(icon.getImageLoadStatus() == MediaTracker.COMPLETE)
356     putValue(Action.SMALL_ICON, icon);
357 iliev 842 } catch(Exception x) {
358     CC.getLogger().log(Level.INFO, HF.getErrorMessage(x), x);
359     }
360 iliev 787
361     setEnabled(false);
362     }
363    
364     public void
365     actionPerformed(ActionEvent e) {
366     ChannelsPane p = (ChannelsPane)CC.getMainFrame().getSelectedChannelsPane();
367     p.moveSelectedChannelsUp();
368     }
369     }
370    
371     private static class MoveChannelsDown extends AbstractAction {
372     MoveChannelsDown() {
373     super(i18n.getMenuLabel("channels.MoveDown"));
374    
375     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttMoveChannelsDown"));
376    
377     try {
378     URL url = ClassLoader.getSystemClassLoader().getResource (
379     "org/jsampler/view/classic/res/icons/toolbar/Down24.gif"
380     );
381    
382     ImageIcon icon = new ImageIcon(url);
383     if(icon.getImageLoadStatus() == MediaTracker.COMPLETE)
384     putValue(Action.SMALL_ICON, icon);
385 iliev 842 } catch(Exception x) {
386     CC.getLogger().log(Level.INFO, HF.getErrorMessage(x), x);
387     }
388 iliev 787
389     setEnabled(false);
390     }
391    
392     public void
393     actionPerformed(ActionEvent e) {
394     ChannelsPane p = (ChannelsPane)CC.getMainFrame().getSelectedChannelsPane();
395     p.moveSelectedChannelsDown();
396     }
397     }
398    
399     private static class MoveChannelsAtBottom extends AbstractAction {
400     MoveChannelsAtBottom() {
401     super(i18n.getMenuLabel("channels.MoveAtBottom"));
402    
403     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttMoveChannelsAtBottom"));
404     setEnabled(false);
405     }
406    
407     public void
408     actionPerformed(ActionEvent e) {
409     ChannelsPane p = (ChannelsPane)CC.getMainFrame().getSelectedChannelsPane();
410     p.moveSelectedChannelsAtBottom();
411     }
412     }
413    
414     public static class
415     MoveChannelsTo extends AbstractAction implements PropertyChangeListener {
416     private final JSChannelsPane pane;
417    
418     MoveChannelsTo(JSChannelsPane pane) {
419     super(pane.getTitle());
420    
421     this.pane = pane;
422    
423     String desc = i18n.getMenuLabel("ttMoveChannelsTo", pane.getTitle());
424     putValue(SHORT_DESCRIPTION, desc);
425     pane.addPropertyChangeListener(JSChannelsPane.TITLE, this);
426     }
427    
428     public void
429     actionPerformed(ActionEvent e) {
430     JSChannelsPane acp = CC.getMainFrame().getSelectedChannelsPane();
431     JSChannel[] chns = acp.getSelectedChannels();
432    
433     for(JSChannel c : chns) acp.removeChannel(c);
434    
435     pane.addChannels(chns);
436    
437     CC.getMainFrame().setSelectedChannelsPane(pane);
438    
439     }
440    
441     public void
442     propertyChange(PropertyChangeEvent e) {
443     putValue(NAME, pane.getTitle());
444    
445     String desc = i18n.getMenuLabel("ttMoveChannelsTo", pane.getTitle());
446     putValue(SHORT_DESCRIPTION, desc);
447     }
448    
449     public JSChannelsPane
450     getChannelsPane() { return pane; }
451     }
452    
453     private static class SelectAllChannels extends AbstractAction {
454     SelectAllChannels() {
455     super(i18n.getMenuLabel("channels.selectAll"));
456    
457     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttSelectAllChannels"));
458     }
459    
460     public void
461     actionPerformed(ActionEvent e) {
462     ChannelsPane p = (ChannelsPane)CC.getMainFrame().getSelectedChannelsPane();
463     p.selectAllChannels();
464     }
465     }
466    
467     private static class DeselectChannels extends AbstractAction {
468     DeselectChannels() {
469     super(i18n.getMenuLabel("channels.selectNone"));
470    
471     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttDeselectChannels"));
472     }
473    
474     public void
475     actionPerformed(ActionEvent e) {
476     ChannelsPane p = (ChannelsPane)CC.getMainFrame().getSelectedChannelsPane();
477     p.deselectChannels();
478     }
479     }
480    
481     private static class RemoveChannels extends AbstractAction {
482     RemoveChannels() {
483     super(i18n.getMenuLabel("channels.RemoveChannel"));
484    
485     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttRemoveChannels"));
486    
487     try {
488     URL url = ClassLoader.getSystemClassLoader().getResource (
489     "org/jsampler/view/classic/res/icons/toolbar/Delete24.gif"
490     );
491    
492     ImageIcon icon = new ImageIcon(url);
493     if(icon.getImageLoadStatus() == MediaTracker.COMPLETE)
494     putValue(Action.SMALL_ICON, icon);
495 iliev 842 } catch(Exception x) {
496     CC.getLogger().log(Level.INFO, HF.getErrorMessage(x), x);
497     }
498 iliev 787
499     setEnabled(false);
500     }
501    
502     public void
503     actionPerformed(ActionEvent e) {
504     JSChannelsPane p = CC.getMainFrame().getSelectedChannelsPane();
505     if(p.getSelectedChannelCount() > 1)
506     if(!HF.showYesNoDialog (
507     CC.getMainFrame(), i18n.getMessage("A4n.removeChannels?")
508     )) return;
509    
510     JSChannel[] chnS = p.getSelectedChannels();
511    
512     for(JSChannel c : chnS) removeChannel(c);
513     }
514    
515     private void
516     removeChannel(final JSChannel c) {
517     final JSChannelsPane p = CC.getMainFrame().getSelectedChannelsPane();
518     int id = c.getChannelInfo().getChannelID();
519     final org.jsampler.task.RemoveChannel rc =
520     new org.jsampler.task.RemoveChannel(id);
521    
522     rc.addTaskListener(new TaskListener() {
523     public void
524     taskPerformed(TaskEvent e) {
525     if(rc.doneWithErrors()) return;
526    
527     p.removeChannel(c);
528     }
529     });
530    
531     CC.getTaskQueue().add(rc);
532     }
533     }
534    
535     // TABS
536     public final static Action newChannelsTab = new NewChannelsTab();
537    
538     public final static Action editTabTitle = new EditTabTitle();
539    
540     public final static Action moveTab2Beginning = new MoveTab2Beginning();
541     public final static Action moveTab2Left = new MoveTab2Left();
542     public final static Action moveTab2Right = new MoveTab2Right();
543     public final static Action moveTab2End = new MoveTab2End();
544    
545     public final static Action closeChannelsTab = new CloseChannelsTab();
546    
547    
548     private static class NewChannelsTab extends AbstractAction {
549     NewChannelsTab() {
550     super(i18n.getMenuLabel("tabs.new"));
551    
552     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttNewTab"));
553    
554     /*try {
555     URL u = new URL(PATH + "general/Preferences24.gif");
556     ImageIcon ii = new ImageIcon(u);
557     if(ii.getImageLoadStatus() == MediaTracker.COMPLETE)
558     putValue(Action.SMALL_ICON, ii);
559     } catch(Exception x) {
560 iliev 842 CC.getLogger().log(Level.INFO, HF.getErrorMessage(x), x);
561 iliev 787 }*/
562     }
563    
564     public void
565     actionPerformed(ActionEvent e) {
566     new NewChannelsTabDlg(CC.getMainFrame()).setVisible(true);
567     }
568     }
569    
570     private static class EditTabTitle extends AbstractAction {
571     EditTabTitle() {
572     super(i18n.getMenuLabel("tabs.changeTitle"));
573    
574     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttEditTabTitle"));
575     setEnabled(false);
576     }
577    
578     public void
579     actionPerformed(ActionEvent e) {
580     new ChangeTabTitleDlg(CC.getMainFrame()).setVisible(true);
581     }
582     }
583    
584     private static class MoveTab2Beginning extends AbstractAction {
585     MoveTab2Beginning() {
586     super(i18n.getMenuLabel("tabs.move2Beginning"));
587    
588     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttMoveTab2Beginning"));
589     setEnabled(false);
590     }
591    
592     public void
593     actionPerformed(ActionEvent e) {
594     ((MainFrame)CC.getMainFrame()).moveTab2Beginning();
595     }
596     }
597    
598     private static class MoveTab2Left extends AbstractAction {
599     MoveTab2Left() {
600     super(i18n.getMenuLabel("tabs.move2Left"));
601    
602     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttMoveTab2Left"));
603     setEnabled(false);
604     }
605    
606     public void
607     actionPerformed(ActionEvent e) { ((MainFrame)CC.getMainFrame()).moveTab2Left(); }
608     }
609    
610     private static class MoveTab2Right extends AbstractAction {
611     MoveTab2Right() {
612     super(i18n.getMenuLabel("tabs.move2Right"));
613    
614     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttMoveTab2Right"));
615     setEnabled(false);
616     }
617    
618     public void
619     actionPerformed(ActionEvent e) { ((MainFrame)CC.getMainFrame()).moveTab2Right(); }
620     }
621    
622     private static class MoveTab2End extends AbstractAction {
623     MoveTab2End() {
624     super(i18n.getMenuLabel("tabs.move2End"));
625    
626     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttMoveTab2End"));
627     setEnabled(false);
628     }
629    
630     public void
631     actionPerformed(ActionEvent e) { ((MainFrame)CC.getMainFrame()).moveTab2End(); }
632     }
633    
634     private static class CloseChannelsTab extends AbstractAction {
635     CloseChannelsTab() {
636     super(i18n.getMenuLabel("tabs.close"));
637    
638     putValue(SHORT_DESCRIPTION, i18n.getMenuLabel("ttCloseTab"));
639    
640     setEnabled(false);
641     }
642    
643     public void
644     actionPerformed(ActionEvent e) {
645     JSMainFrame frm = CC.getMainFrame();
646     JSChannelsPane chnPane = frm.getSelectedChannelsPane();
647     if(chnPane.getChannelCount() > 0) {
648     CloseTabDlg dlg = new CloseTabDlg(frm);
649     dlg.setVisible(true);
650     if(dlg.isCancelled()) return;
651    
652     JSChannel[] chns = chnPane.getChannels();
653    
654     if(dlg.remove()) {
655    
656    
657     } else {
658     JSChannelsPane p = dlg.getSelectedChannelsPane();
659     for(JSChannel c : chns) {
660     chnPane.removeChannel(c);
661     }
662     p.addChannels(chns);
663     frm.setSelectedChannelsPane(p);
664     }
665     }
666    
667     frm.removeChannelsPane(chnPane);
668     }
669     }
670    
671     // HELP
672     public final static HelpAbout helpAbout = new HelpAbout();
673    
674     private static class HelpAbout extends AbstractAction {
675     HelpAbout() {
676     super(i18n.getMenuLabel("help.about", "JS Classic"));
677     }
678    
679     public void
680     actionPerformed(ActionEvent e) {
681     new HelpAboutDlg(CC.getMainFrame()).setVisible(true);
682     }
683     }
684     }

  ViewVC Help
Powered by ViewVC