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

Contents of /jsampler/trunk/src/org/jsampler/view/classic/MainFrame.java

Parent Directory Parent Directory | Revision Log Revision Log


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

1 /*
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.BorderLayout;
26 import java.awt.Dimension;
27
28 import java.awt.event.ActionEvent;
29 import java.awt.event.ActionListener;
30 import java.awt.event.KeyEvent;
31
32 import java.util.logging.Level;
33 import java.util.Vector;
34
35 import javax.swing.Action;
36 import javax.swing.ImageIcon;
37 import javax.swing.JCheckBoxMenuItem;
38 import javax.swing.JMenu;
39 import javax.swing.JMenuBar;
40 import javax.swing.JMenuItem;
41 import javax.swing.JPanel;
42 import javax.swing.JSplitPane;
43 import javax.swing.JTabbedPane;
44 import javax.swing.KeyStroke;
45
46 import javax.swing.event.ChangeEvent;
47 import javax.swing.event.ChangeListener;
48 import javax.swing.event.ListSelectionEvent;
49 import javax.swing.event.ListSelectionListener;
50
51 import net.sf.juife.NavigationPage;
52 import net.sf.juife.NavigationPane;
53
54 import org.jsampler.CC;
55 import org.jsampler.Prefs;
56
57 import org.jsampler.view.JSChannel;
58 import org.jsampler.view.JSChannelsPane;
59
60 import static org.jsampler.view.classic.ClassicI18n.i18n;
61 import static org.jsampler.view.classic.LeftPane.getLeftPane;
62
63
64 /**
65 *
66 * @author Grigor Iliev
67 */
68 public class
69 MainFrame extends org.jsampler.view.JSMainFrame implements ChangeListener, ListSelectionListener {
70 public static ImageIcon applicationIcon = null;
71
72 static {
73 String s = "org/jsampler/view/classic/res/icons/app-icon.png";
74 java.net.URL url = ClassLoader.getSystemClassLoader().getResource(s);
75 if(url != null) applicationIcon = new ImageIcon(url);
76 }
77
78 private final Toolbar toolbar = new Toolbar();
79 private final Statusbar statusbar = new Statusbar();
80 private final JMenuBar menuBar = new JMenuBar();
81
82 private final JSplitPane splitPane;
83
84 private final JPanel mainPane = new JPanel();
85 private final JPanel channelsPane = new JPanel(new BorderLayout());
86
87 private final JTabbedPane tabbedPane =
88 new JTabbedPane(JTabbedPane.BOTTOM, JTabbedPane.SCROLL_TAB_LAYOUT);
89 private final JMenu tabsMenu = new JMenu(i18n.getMenuLabel("channels.MoveToTab"));
90 private final Vector<JMenuItem> miList = new Vector<JMenuItem>();
91
92 /** Creates a new instance of JSMainFrame */
93 public
94 MainFrame() {
95 setTitle(i18n.getLabel("MainFrame.title"));
96
97 getContentPane().add(toolbar, BorderLayout.NORTH);
98 getContentPane().add(mainPane);
99
100 mainPane.setLayout(new BorderLayout());
101 mainPane.add(statusbar, BorderLayout.SOUTH);
102
103 ChannelsPane p = new ChannelsPane("Untitled");
104 p.addListSelectionListener(this);
105 getChannelsPaneList().add(p);
106 miList.add(new JMenuItem(new A4n.MoveChannelsTo(p)));
107
108 channelsPane.add(getChannelsPane(0));
109
110 splitPane = new JSplitPane (
111 JSplitPane.HORIZONTAL_SPLIT,
112 true, // continuousLayout
113 getLeftPane(),
114 channelsPane
115 );
116
117 splitPane.setOneTouchExpandable(true);
118
119 mainPane.add(splitPane);
120
121 if(applicationIcon != null) setIconImage(applicationIcon.getImage());
122
123 initMainFrame();
124 pack();
125
126 if(Prefs.getSaveWindowProperties()) setSavedSize();
127 else setDefaultSize();
128 }
129
130 private void
131 initMainFrame() {
132 addMenu();
133 handleEvents();
134 }
135
136 private void
137 setDefaultSize() {
138 Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
139 double width = dimension.getWidth();
140 double height = dimension.getHeight();
141 setBounds(50, 100, (int) width - 100, (int) height - 200);
142 }
143
144 private void
145 setSavedSize() {
146 String s = Prefs.getWindowSizeAndLocation();
147 if(s == null) {
148 setDefaultSize();
149 return;
150 }
151
152 try {
153 int i = s.indexOf(',');
154 int x = Integer.parseInt(s.substring(0, i));
155
156 s = s.substring(i + 1);
157 i = s.indexOf(',');
158 int y = Integer.parseInt(s.substring(0, i));
159
160 s = s.substring(i + 1);
161 i = s.indexOf(',');
162 int width = Integer.parseInt(s.substring(0, i));
163
164 s = s.substring(i + 1);
165 int height = Integer.parseInt(s);
166
167 setBounds(x, y, width, height);
168 } catch(Exception x) {
169 String msg = "Parsing of window size and location string failed";
170 CC.getLogger().log(Level.INFO, msg, x);
171 setDefaultSize();
172 }
173
174 if(Prefs.getWindowMaximized())
175 setExtendedState(getExtendedState() | MAXIMIZED_BOTH);
176 }
177
178 private void
179 addMenu() {
180 JMenu m;
181 JMenu submenu;
182 JMenuItem mi;
183
184 setJMenuBar(menuBar);
185
186 // Actions
187 m = new JMenu(i18n.getMenuLabel("actions"));
188 menuBar.add(m);
189
190 mi = new JMenuItem(A4n.connect);
191 mi.setIcon(null);
192 //mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK));
193 m.add(mi);
194
195 mi = new JMenuItem(A4n.refresh);
196 mi.setIcon(null);
197 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0));
198 m.add(mi);
199
200 mi = new JMenuItem(A4n.resetSampler);
201 mi.setIcon(null);
202 m.add(mi);
203
204 mi = new JMenuItem(A4n.samplerInfo);
205 mi.setIcon(null);
206 m.add(mi);
207
208 m.addSeparator();
209
210 mi = new JMenuItem(i18n.getMenuLabel("actions.exit"));
211 m.add(mi);
212 mi.addActionListener(new ActionListener() {
213 public void
214 actionPerformed(ActionEvent e) { CC.cleanExit(); }
215 });
216
217 // Edit
218 m = new JMenu(i18n.getMenuLabel("edit"));
219 menuBar.add(m);
220
221 m.addSeparator();
222
223 mi = new JMenuItem(A4n.preferences);
224 mi.setIcon(null);
225 mi.setAccelerator(KeyStroke.getKeyStroke (
226 KeyEvent.VK_P, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK
227 ));
228 m.add(mi);
229
230 // View
231 m = new JMenu(i18n.getMenuLabel("view"));
232 menuBar.add(m);
233
234 final JCheckBoxMenuItem cbmi =
235 new JCheckBoxMenuItem(i18n.getMenuLabel("view.toolbar"));
236
237 m.add(cbmi);
238 cbmi.addActionListener(new ActionListener() {
239 public void
240 actionPerformed(ActionEvent e) { showToolbar(cbmi.getState()); }
241 });
242
243 boolean b = ClassicPrefs.shouldShowToolbar();
244 cbmi.setSelected(b);
245 showToolbar(b);
246
247 final JCheckBoxMenuItem cbmi1 =
248 new JCheckBoxMenuItem(i18n.getMenuLabel("view.leftPane"));
249
250 m.add(cbmi1);
251 cbmi1.addActionListener(new ActionListener() {
252 public void
253 actionPerformed(ActionEvent e) { showLeftPane(cbmi1.getState()); }
254 });
255
256 b = ClassicPrefs.shouldShowLeftPane();
257 cbmi1.setSelected(b);
258 showLeftPane(b);
259
260 final JCheckBoxMenuItem cbmi2 =
261 new JCheckBoxMenuItem(i18n.getMenuLabel("view.statusbar"));
262
263 m.add(cbmi2);
264 cbmi2.addActionListener(new ActionListener() {
265 public void
266 actionPerformed(ActionEvent e) { showStatusbar(cbmi2.getState()); }
267 });
268 b = ClassicPrefs.shouldShowStatusbar();
269 cbmi2.setSelected(b);
270 showStatusbar(b);
271
272 // Channels
273 m = new JMenu(i18n.getMenuLabel("channels"));
274 menuBar.add(m);
275
276 mi = new JMenuItem(A4n.newChannel);
277 mi.setIcon(null);
278 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK));
279 m.add(mi);
280
281 mi = new JMenuItem(A4n.newChannelWizard);
282 mi.setIcon(null);
283 mi.setAccelerator(KeyStroke.getKeyStroke (
284 KeyEvent.VK_N, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK)
285 );
286 m.add(mi);
287
288 mi = new JMenuItem(A4n.duplicateChannels);
289 mi.setIcon(null);
290 m.add(mi);
291
292 m.addSeparator();
293
294 mi = new JMenuItem(A4n.moveChannelsOnTop);
295 mi.setIcon(null);
296 mi.setAccelerator(KeyStroke.getKeyStroke (
297 KeyEvent.VK_UP, KeyEvent.ALT_MASK | KeyEvent.SHIFT_MASK
298 ));
299 m.add(mi);
300
301 mi = new JMenuItem(A4n.moveChannelsUp);
302 mi.setIcon(null);
303 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_UP, KeyEvent.ALT_MASK));
304 m.add(mi);
305
306 mi = new JMenuItem(A4n.moveChannelsDown);
307 mi.setIcon(null);
308 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, KeyEvent.ALT_MASK));
309 m.add(mi);
310
311 mi = new JMenuItem(A4n.moveChannelsAtBottom);
312 mi.setIcon(null);
313 mi.setAccelerator(KeyStroke.getKeyStroke (
314 KeyEvent.VK_DOWN, KeyEvent.ALT_MASK | KeyEvent.SHIFT_MASK
315 ));
316 m.add(mi);
317
318 tabsMenu.setEnabled(false);
319 m.add(tabsMenu);
320
321 m.addSeparator();
322
323 mi = new JMenuItem(A4n.selectAllChannels);
324 mi.setIcon(null);
325 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK));
326 m.add(mi);
327
328 mi = new JMenuItem(A4n.deselectChannels);
329 mi.setIcon(null);
330 mi.setAccelerator(KeyStroke.getKeyStroke (
331 KeyEvent.VK_A, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK
332 ));
333 m.add(mi);
334
335 m.addSeparator();
336
337 mi = new JMenuItem(A4n.removeChannels);
338 mi.setIcon(null);
339 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, KeyEvent.SHIFT_MASK));
340 m.add(mi);
341
342
343 // Tabs
344 m = new JMenu(i18n.getMenuLabel("tabs"));
345 menuBar.add(m);
346
347 mi = new JMenuItem(A4n.newChannelsTab);
348 mi.setIcon(null);
349 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, KeyEvent.CTRL_MASK));
350 m.add(mi);
351
352 mi = new JMenuItem(A4n.editTabTitle);
353 mi.setIcon(null);
354 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0));
355 m.add(mi);
356
357 m.addSeparator();
358
359 mi = new JMenuItem(A4n.moveTab2Beginning);
360 mi.setIcon(null);
361 mi.setAccelerator(KeyStroke.getKeyStroke (
362 KeyEvent.VK_LEFT, KeyEvent.ALT_MASK | KeyEvent.SHIFT_MASK
363 ));
364 m.add(mi);
365
366 mi = new JMenuItem(A4n.moveTab2Left);
367 mi.setIcon(null);
368 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, KeyEvent.ALT_MASK));
369 m.add(mi);
370
371 mi = new JMenuItem(A4n.moveTab2Right);
372 mi.setIcon(null);
373 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, KeyEvent.ALT_MASK));
374 m.add(mi);
375
376 mi = new JMenuItem(A4n.moveTab2End);
377 mi.setIcon(null);
378 mi.setAccelerator(KeyStroke.getKeyStroke (
379 KeyEvent.VK_RIGHT, KeyEvent.ALT_MASK | KeyEvent.SHIFT_MASK
380 ));
381 m.add(mi);
382
383 m.addSeparator();
384
385 mi = new JMenuItem(A4n.closeChannelsTab);
386 mi.setIcon(null);
387 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.CTRL_MASK));
388 m.add(mi);
389
390
391 // Help
392 m = new JMenu(i18n.getMenuLabel("help"));
393 menuBar.add(m);
394
395 mi = new JMenuItem(A4n.helpAbout);
396 mi.setIcon(null);
397 m.add(mi);
398 }
399
400 private void
401 handleEvents() {
402 tabbedPane.addChangeListener(this);
403 }
404
405 private void
406 showToolbar(boolean b) {
407 if(b) getContentPane().add(toolbar, BorderLayout.NORTH);
408 else getContentPane().remove(toolbar);
409
410 ClassicPrefs.setShowToolbar(b);
411
412 validate();
413 repaint();
414 }
415
416 private void
417 showStatusbar(boolean b) {
418 ClassicPrefs.setShowStatusbar(b);
419 statusbar.setVisible(b);
420 }
421
422 private void
423 showLeftPane(boolean b) {
424 ClassicPrefs.setShowLeftPane(b);
425
426 mainPane.remove(splitPane);
427 mainPane.remove(channelsPane);
428
429 if(b) {
430 splitPane.setRightComponent(channelsPane);
431 mainPane.add(splitPane);
432 } else {
433 mainPane.add(channelsPane);
434 }
435
436 validate();
437 repaint();
438 }
439
440 public void
441 addChannelsPane(JSChannelsPane chnPane) {
442 insertChannelsPane(chnPane, getChannelsPaneCount());
443 }
444
445 public void
446 insertChannelsPane(JSChannelsPane chnPane, int idx) {
447 chnPane.addListSelectionListener(this);
448
449 if(getChannelsPaneCount() == 1) {
450 channelsPane.remove(getChannelsPane(0));
451 channelsPane.add(tabbedPane);
452 tabbedPane.addTab(getChannelsPane(0).getTitle(), getChannelsPane(0));
453 A4n.closeChannelsTab.setEnabled(true);
454 A4n.editTabTitle.setEnabled(true);
455 }
456
457 getChannelsPaneList().insertElementAt(chnPane, idx);
458 tabbedPane.insertTab(chnPane.getTitle(), null, chnPane, null, idx);
459 tabbedPane.setSelectedComponent(chnPane);
460 miList.insertElementAt(new JMenuItem(new A4n.MoveChannelsTo(chnPane)), idx);
461
462 updateTabsMenu();
463 }
464
465 public JSChannelsPane
466 getSelectedChannelsPane() {
467 if(getChannelsPaneList().size() == 1) return getChannelsPane(0);
468 return (JSChannelsPane)tabbedPane.getSelectedComponent();
469 }
470
471 public void
472 setSelectedChannelsPane(JSChannelsPane pane) {
473 if(getChannelsPaneList().size() == 1) return;
474 tabbedPane.setSelectedComponent(pane);
475 }
476
477 public boolean
478 removeChannelsPane(JSChannelsPane chnPane) {
479 chnPane.removeListSelectionListener(this);
480
481 tabbedPane.remove(chnPane);
482 boolean b = super.removeChannelsPane(chnPane);
483 for(int i = 0; i < miList.size(); i++) {
484 A4n.MoveChannelsTo a = (A4n.MoveChannelsTo)miList.get(i).getAction();
485 if(a.getChannelsPane().equals(chnPane)) {
486 miList.remove(i);
487 break;
488 }
489 }
490
491 updateTabsMenu();
492
493 if(getChannelsPaneCount() == 1) {
494 A4n.closeChannelsTab.setEnabled(false);
495 A4n.editTabTitle.setEnabled(false);
496 tabbedPane.remove(getChannelsPane(0));
497 channelsPane.remove(tabbedPane);
498 channelsPane.add(getChannelsPane(0));
499 }
500
501 return b;
502 }
503
504 private void
505 updateTabsMenu() {
506 tabsMenu.removeAll();
507
508 for(JMenuItem mi : miList) {
509 A4n.MoveChannelsTo a = (A4n.MoveChannelsTo)mi.getAction();
510 if(!a.getChannelsPane().equals(getSelectedChannelsPane())) tabsMenu.add(mi);
511 }
512
513 }
514
515 public void
516 updateTabTitle(JSChannelsPane chnPane) {
517 tabbedPane.setTitleAt(tabbedPane.getSelectedIndex(), chnPane.getTitle());
518 }
519
520 private void
521 checkChannelSelection(JSChannelsPane pane) {
522 if(!pane.hasSelectedChannel()) {
523 A4n.duplicateChannels.putValue (
524 Action.NAME, i18n.getMenuLabel("channels.duplicate")
525 );
526 A4n.duplicateChannels.setEnabled(false);
527
528 A4n.removeChannels.putValue (
529 Action.NAME, i18n.getMenuLabel("channels.RemoveChannel")
530 );
531 A4n.removeChannels.setEnabled(false);
532
533 tabsMenu.setEnabled(false);
534
535 A4n.moveChannelsOnTop.setEnabled(false);
536 A4n.moveChannelsUp.setEnabled(false);
537 A4n.moveChannelsDown.setEnabled(false);
538 A4n.moveChannelsAtBottom.setEnabled(false);
539
540 return;
541 }
542
543 A4n.duplicateChannels.setEnabled(true);
544 A4n.removeChannels.setEnabled(true);
545
546 if(getChannelsPaneCount() > 1) tabsMenu.setEnabled(true);
547
548 if(pane.getSelectedChannelCount() > 1) {
549 A4n.duplicateChannels.putValue (
550 Action.NAME, i18n.getMenuLabel("channels.duplicateChannels")
551 );
552 A4n.removeChannels.putValue (
553 Action.NAME, i18n.getMenuLabel("channels.RemoveChannels")
554 );
555 } else {
556 A4n.duplicateChannels.putValue (
557 Action.NAME, i18n.getMenuLabel("channels.duplicate")
558 );
559 A4n.removeChannels.putValue (
560 Action.NAME, i18n.getMenuLabel("channels.RemoveChannel")
561 );
562 }
563
564 A4n.moveChannelsOnTop.setEnabled(false);
565 A4n.moveChannelsUp.setEnabled(true);
566 A4n.moveChannelsDown.setEnabled(true);
567 A4n.moveChannelsAtBottom.setEnabled(false);
568
569 JSChannel[] chns = pane.getSelectedChannels();
570
571 for(int i = 0; i < chns.length; i++) {
572 if(pane.getChannel(i) != chns[i]) {
573 A4n.moveChannelsOnTop.setEnabled(true);
574 break;
575 }
576 }
577
578 if(chns[0] == pane.getFirstChannel()) A4n.moveChannelsUp.setEnabled(false);
579
580 if(chns[chns.length - 1] == pane.getLastChannel())
581 A4n.moveChannelsDown.setEnabled(false);
582
583 for(int i = chns.length - 1, j = pane.getChannelCount() - 1; i >= 0; i--, j--) {
584 if(pane.getChannel(j) != chns[i]) {
585 A4n.moveChannelsAtBottom.setEnabled(true);
586 break;
587 }
588 }
589 }
590
591 private void
592 checkTabSelection() {
593 int si = tabbedPane.getSelectedIndex();
594
595 if(si > 0) {
596 A4n.moveTab2Beginning.setEnabled(true);
597 A4n.moveTab2Left.setEnabled(true);
598 } else {
599 A4n.moveTab2Beginning.setEnabled(false);
600 A4n.moveTab2Left.setEnabled(false);
601 }
602
603 if(si != -1 && si < tabbedPane.getTabCount() - 1) {
604 A4n.moveTab2Right.setEnabled(true);
605 A4n.moveTab2End.setEnabled(true);
606 } else {
607 A4n.moveTab2Right.setEnabled(false);
608 A4n.moveTab2End.setEnabled(false);
609 }
610 }
611
612 /*public JTabbedPane
613 getTabbedPane() { return tabbedPane; }*/
614
615 public JMenu
616 getTabsMenu() { return tabsMenu; }
617
618 public void
619 stateChanged(ChangeEvent e) {
620 updateTabsMenu();
621 checkChannelSelection(getSelectedChannelsPane());
622 checkTabSelection();
623 }
624
625 public void
626 valueChanged(ListSelectionEvent e) {
627 if(e.getValueIsAdjusting()) return;
628 if(e.getSource() != getSelectedChannelsPane()) return;
629
630 checkChannelSelection(getSelectedChannelsPane());
631 }
632
633 public void
634 moveTab2Beginning() {
635 int idx = tabbedPane.getSelectedIndex();
636 if(idx < 1) {
637 CC.getLogger().info("Can't move tab to beginning");
638 return;
639 }
640
641 JSChannelsPane c = (JSChannelsPane)tabbedPane.getSelectedComponent();
642 if(getChannelsPane(idx) != c)
643 CC.getLogger().warning("Channels pane indices don't match");
644 removeChannelsPane(c);
645 insertChannelsPane(c, 0);
646 tabbedPane.setSelectedComponent(c);
647 }
648
649 public void
650 moveTab2Left() {
651 int idx = tabbedPane.getSelectedIndex();
652 if(idx < 1) {
653 CC.getLogger().info("Can't move tab to left");
654 return;
655 }
656
657
658 JSChannelsPane c = (JSChannelsPane)tabbedPane.getSelectedComponent();
659 if(getChannelsPane(idx) != c)
660 CC.getLogger().warning("Channels pane indices don't match");
661 removeChannelsPane(c);
662 insertChannelsPane(c, idx - 1);
663 tabbedPane.setSelectedComponent(c);
664 }
665
666 public void
667 moveTab2Right() {
668 int idx = tabbedPane.getSelectedIndex();
669 if(idx == -1 && idx >= tabbedPane.getTabCount()) {
670 CC.getLogger().info("Can't move tab to right");
671 return;
672 }
673
674 JSChannelsPane c = (JSChannelsPane)tabbedPane.getSelectedComponent();
675 if(getChannelsPane(idx) != c)
676 CC.getLogger().warning("Channels pane indices don't match");
677 removeChannelsPane(c);
678 insertChannelsPane(c, idx + 1);
679 tabbedPane.setSelectedComponent(c);
680 }
681
682 public void
683 moveTab2End() {
684 int idx = tabbedPane.getSelectedIndex();
685 if(idx == -1 && idx >= tabbedPane.getTabCount()) {
686 CC.getLogger().info("Can't move tab to right");
687 return;
688 }
689
690 JSChannelsPane c = (JSChannelsPane)tabbedPane.getSelectedComponent();
691 if(getChannelsPane(idx) != c)
692 CC.getLogger().warning("Channels pane indices don't match");
693 removeChannelsPane(c);
694 addChannelsPane(c);
695 tabbedPane.setSelectedComponent(c);
696 }
697 }

  ViewVC Help
Powered by ViewVC