~smaioli/azureus/ubuntu-experimental

« back to all changes in this revision

Viewing changes to org/gudy/azureus2/ui/swt/views/ConfigView.java

MergedĀ VuzeĀ 4.2.0.2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 */
21
21
package org.gudy.azureus2.ui.swt.views;
22
22
 
23
 
import java.util.ArrayList;
24
 
import java.util.Arrays;
25
 
import java.util.Comparator;
26
 
import java.util.HashMap;
27
 
import java.util.Map;
 
23
import java.util.*;
28
24
 
29
25
import org.eclipse.swt.SWT;
30
26
import org.eclipse.swt.custom.SashForm;
31
27
import org.eclipse.swt.custom.ScrolledComposite;
32
28
import org.eclipse.swt.custom.StackLayout;
33
 
import org.eclipse.swt.events.ModifyEvent;
34
 
import org.eclipse.swt.events.ModifyListener;
35
 
import org.eclipse.swt.events.MouseAdapter;
36
 
import org.eclipse.swt.events.MouseEvent;
37
 
import org.eclipse.swt.events.SelectionAdapter;
38
 
import org.eclipse.swt.events.SelectionEvent;
39
 
import org.eclipse.swt.graphics.Font;
40
 
import org.eclipse.swt.graphics.FontData;
41
 
import org.eclipse.swt.graphics.Image;
42
 
import org.eclipse.swt.graphics.Point;
43
 
import org.eclipse.swt.layout.FormAttachment;
44
 
import org.eclipse.swt.layout.FormData;
45
 
import org.eclipse.swt.layout.FormLayout;
46
 
import org.eclipse.swt.layout.GridData;
47
 
import org.eclipse.swt.layout.GridLayout;
 
29
import org.eclipse.swt.events.*;
 
30
import org.eclipse.swt.graphics.*;
 
31
import org.eclipse.swt.layout.*;
48
32
import org.eclipse.swt.widgets.*;
 
33
 
49
34
import org.gudy.azureus2.core3.config.COConfigurationManager;
50
35
import org.gudy.azureus2.core3.internat.MessageText;
51
36
import org.gudy.azureus2.core3.logging.LogEvent;
52
37
import org.gudy.azureus2.core3.logging.LogIDs;
53
38
import org.gudy.azureus2.core3.logging.Logger;
54
 
import org.gudy.azureus2.core3.util.AERunnable;
55
 
import org.gudy.azureus2.core3.util.Debug;
56
 
import org.gudy.azureus2.core3.util.SystemTime;
 
39
import org.gudy.azureus2.core3.util.*;
57
40
import org.gudy.azureus2.core3.util.Timer;
58
 
import org.gudy.azureus2.core3.util.TimerEvent;
59
 
import org.gudy.azureus2.core3.util.TimerEventPerformer;
60
 
import org.gudy.azureus2.plugins.ui.config.ConfigSection;
61
 
import org.gudy.azureus2.plugins.ui.config.ConfigSectionSWT;
62
 
import org.gudy.azureus2.pluginsimpl.local.ui.config.ConfigSectionRepository;
63
 
import org.gudy.azureus2.ui.swt.ImageRepository;
64
41
import org.gudy.azureus2.ui.swt.Messages;
65
42
import org.gudy.azureus2.ui.swt.Utils;
66
43
import org.gudy.azureus2.ui.swt.plugins.UISWTConfigSection;
67
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionConnection;
68
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionConnectionAdvanced;
69
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionConnectionEncryption;
70
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionConnectionProxy;
71
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionFile;
72
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionFileMove;
73
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionFilePerformance;
74
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionFileTorrents;
75
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionFileTorrentsDecoding;
76
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionIPFilter;
77
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionInterface;
78
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionInterfaceAlerts;
79
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionInterfaceColor;
80
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionInterfaceDisplay;
81
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionInterfaceLanguage;
82
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionInterfaceStart;
83
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionLogging;
84
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionMode;
85
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionPlugins;
86
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionSecurity;
87
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionSharing;
88
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionStats;
89
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionTracker;
90
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionTrackerClient;
91
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionTrackerServer;
92
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionTransfer;
93
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionTransferAutoSpeed;
94
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionTransferAutoSpeedBeta;
95
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionTransferAutoSpeedSelect;
96
 
import org.gudy.azureus2.ui.swt.views.configsections.ConfigSectionTransferLAN;
 
44
import org.gudy.azureus2.ui.swt.views.configsections.*;
97
45
 
98
46
import com.aelitis.azureus.core.AzureusCore;
99
47
import com.aelitis.azureus.core.AzureusCoreFactory;
 
48
import com.aelitis.azureus.ui.swt.imageloader.ImageLoader;
 
49
 
 
50
import org.gudy.azureus2.plugins.ui.config.ConfigSection;
 
51
import org.gudy.azureus2.plugins.ui.config.ConfigSectionSWT;
 
52
 
 
53
import org.gudy.azureus2.pluginsimpl.local.ui.config.ConfigSectionRepository;
100
54
 
101
55
/**
102
56
 * @author Olivier
109
63
  AzureusCore           azureus_core;
110
64
  
111
65
  
112
 
  Map sections = new HashMap();
 
66
  Map<TreeItem, ConfigSection> sections = new HashMap<TreeItem, ConfigSection>();
 
67
  // Only access on SWT Thread
 
68
  java.util.List<ConfigSection> sectionsCreated = new ArrayList<ConfigSection>(1);
113
69
  Composite cConfig;
114
70
  Composite cConfigSection;
115
71
  StackLayout layoutConfigSection;
124
80
        private String filterText = "";
125
81
        private Label lblX;
126
82
        private Listener scResizeListener;
 
83
        
 
84
        private Image imgSmallX;
 
85
        private Image imgSmallXGray;
127
86
 
128
87
  public 
129
88
  ConfigView() 
208
167
                                }
209
168
                        });
210
169
      txtFilter.setFocus();
 
170
      
 
171
      ImageLoader imageLoader = ImageLoader.getInstance();
 
172
      imgSmallXGray = imageLoader.getImage("smallx-gray");
 
173
      imgSmallX = imageLoader.getImage("smallx");
211
174
 
212
175
                lblX = new Label(cFilterArea, SWT.WRAP);
213
176
      Messages.setLanguageTooltip(lblX, "MyTorrentsView.clearFilter.tooltip");
214
 
      lblX.setImage(ImageRepository.getImage("smallx-gray"));
 
177
      lblX.setImage(imgSmallXGray);
215
178
      lblX.addMouseListener(new MouseAdapter() {
216
179
        public void mouseUp(MouseEvent e) {
217
180
                txtFilter.setText("");
219
182
      });
220
183
      
221
184
      Label lblSearch = new Label(cFilterArea, SWT.NONE);
222
 
      lblSearch.setImage(ImageRepository.getImage("search"));
 
185
      imageLoader.setLabelImage(lblSearch, "search");
223
186
  
224
187
      tree = new Tree(cLeftSide, SWT.NONE);
225
188
      FontData[] fontData = tree.getFont().getFontData();
345
308
     */
346
309
    pluginSections = ConfigSectionRepository.getInstance().getList();
347
310
 
348
 
    ConfigSection[] internalSections = { new ConfigSectionConnection(),
 
311
    ConfigSection[] internalSections = { 
 
312
                                         new ConfigSectionMode(),
 
313
                                         new ConfigSectionConnection(),
349
314
                                         new ConfigSectionConnectionProxy(),
350
315
                                         new ConfigSectionConnectionAdvanced(),
351
316
                                         new ConfigSectionConnectionEncryption(),
365
330
                                         new ConfigSectionInterfaceDisplay(),
366
331
                                         new ConfigSectionInterfaceColor(),
367
332
                                         new ConfigSectionInterfaceAlerts(),
368
 
                                         new ConfigSectionMode(),
 
333
                                         new ConfigSectionInterfacePassword(),
 
334
                                         new ConfigSectionInterfaceLegacy(),
369
335
                                         new ConfigSectionIPFilter(azureus_core),
370
336
                                         new ConfigSectionPlugins(this, azureus_core),
371
337
                                         new ConfigSectionStats(),
461
427
   
462
428
                  c = ((UISWTConfigSection)section).configSectionCreate(sc);
463
429
            }
 
430
            sectionsCreated.add(section);
464
431
            sc.setContent(c);
465
432
          }
466
433
          
518
485
                }
519
486
                
520
487
                if (lblX != null && !lblX.isDisposed()) {
521
 
                        Image img = ImageRepository.getImage(filterText.length() > 0 ? "smallx"
522
 
                                        : "smallx-gray");
 
488
                        Image img = filterText.length() > 0 ? imgSmallX : imgSmallXGray;
523
489
 
524
490
                        lblX.setImage(img);
525
491
                }
632
598
    }
633
599
  }
634
600
        
635
 
        private void ensureSectionBuilt(TreeItem section) {
636
 
    ScrolledComposite item = (ScrolledComposite)section.getData("Panel");
 
601
        private void ensureSectionBuilt(TreeItem treeSection) {
 
602
    ScrolledComposite item = (ScrolledComposite)treeSection.getData("Panel");
637
603
 
638
604
    if (item != null) {
639
605
        
640
 
      ConfigSection configSection = (ConfigSection)section.getData("ConfigSectionSWT");
 
606
      ConfigSection configSection = (ConfigSection)treeSection.getData("ConfigSectionSWT");
641
607
      
642
608
      if (configSection != null) {
643
609
          
644
610
        Control previous = item.getContent();
645
611
        if (previous instanceof Composite) {
646
612
                configSection.configSectionDelete();
 
613
          sectionsCreated.remove(configSection);        
647
614
          Utils.disposeComposite((Composite)previous,true);
648
615
        }
649
616
        
657
624
 
658
625
          c = ((UISWTConfigSection)configSection).configSectionCreate(item);
659
626
        }
 
627
        sectionsCreated.add(configSection);
660
628
        
661
629
        item.setContent(c);
662
630
      }
671
639
                int maxUsermode = 0;
672
640
                try
673
641
                {
674
 
                        ConfigSection sect = (ConfigSection) sections.get(section);
 
642
                        ConfigSection sect = sections.get(section);
675
643
                        if (sect instanceof UISWTConfigSection)
676
644
                        {
677
645
                                maxUsermode = ((UISWTConfigSection) sect).maxUserMode();
889
857
  }
890
858
 
891
859
  public void delete() {
892
 
    for (int i = 0; i < pluginSections.size(); i++) {
 
860
        for (ConfigSection section : sectionsCreated) {
893
861
        try {
894
 
                ((ConfigSection)pluginSections.get(i)).configSectionDelete();
 
862
                section.configSectionDelete();
895
863
        } catch (Exception e) {
896
864
                Debug.out("Error while deleting config section", e);
897
865
        }
898
866
    }
 
867
        sectionsCreated.clear();
899
868
    pluginSections.clear();
900
869
    if(! tree.isDisposed()) {
901
870
            TreeItem[] items = tree.getItems();
912
881
        Utils.disposeSWTObjects(new Object[] { headerFont, filterFoundFont });
913
882
                headerFont = null;
914
883
                filterFoundFont = null;
 
884
 
 
885
    ImageLoader imageLoader = ImageLoader.getInstance();
 
886
    imageLoader.releaseImage("smallx-gray");
 
887
    imageLoader.releaseImage("smallx");
915
888
  }
916
889
 
917
890
  public String getFullTitle() {