Statistics
| Revision:

svn-gvsig-desktop / tags / v2_0_0_Build_2056 / libraries / libCorePlugin / src / org / gvsig / coreplugin / preferences / general / IconThemePage.java @ 39012

History | View | Annotate | Download (3.85 KB)

1
package org.gvsig.coreplugin.preferences.general;
2

    
3
import java.awt.BorderLayout;
4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6
import java.io.File;
7
import java.util.prefs.Preferences;
8

    
9
import javax.swing.ComboBoxModel;
10
import javax.swing.ImageIcon;
11
import javax.swing.JPanel;
12
import javax.swing.event.ListDataListener;
13

    
14
import org.gvsig.andami.PluginServices;
15
import org.gvsig.andami.PluginsLocator;
16
import org.gvsig.andami.PluginsManager;
17
import org.gvsig.andami.preferences.AbstractPreferencePage;
18
import org.gvsig.andami.preferences.StoreException;
19
import org.gvsig.tools.swing.api.ToolsSwingLocator;
20
import org.gvsig.tools.swing.icontheme.IconTheme;
21
import org.gvsig.tools.swing.icontheme.IconThemeManager;
22
import org.slf4j.Logger;
23
import org.slf4j.LoggerFactory;
24

    
25
public class IconThemePage extends AbstractPreferencePage {
26

    
27
        /**
28
         * 
29
         */
30
        private static final long serialVersionUID = 4369071892027860769L;
31

    
32
        private static Logger logger = LoggerFactory.getLogger(IconThemePage.class);
33
        
34
        private String id;
35
        private boolean changed = false;
36
        private IconThemePageLayout panel = null;
37

    
38
        public IconThemePage() {
39
                super();
40
                initialize();
41
                id = this.getClass().getName();
42
                setParentID(GeneralPage.class.getName());
43
        }
44

    
45
        public String getID() {
46
                return id;
47
        }
48

    
49
        public String getTitle() {
50
                return PluginServices.getText(this, "_Icon_theme");
51
        }
52

    
53
        public JPanel getPanel() {
54
                return this;
55
        }
56

    
57
        public void initializeValues() {
58
        }
59

    
60
        public void storeValues() throws StoreException {
61
                IconTheme iconTheme = (IconTheme) panel.combo_selection.getSelectedItem();
62
                if(iconTheme != null && iconTheme != iconTheme.getDefault() ) {
63
                        Preferences prefs = Preferences.userRoot().node("gvsig.icontheme");
64
                        prefs.put("default-theme", iconTheme.getID());
65
                }
66
        }
67

    
68
        public void initializeDefaults() {
69

    
70
        }
71

    
72
        public ImageIcon getIcon() {
73
                return PluginServices.getIconTheme().get("edit-setup-icontheme");
74
        }
75

    
76
        public boolean isValueChanged() {
77
                if( panel.combo_selection.getSelectedIndex()>=0 ) {
78
                        return true;
79
                }
80
                return changed;
81
        }
82

    
83
        public void setChangesApplied() {
84
                changed = false;
85
        }
86

    
87
        private void initialize() {
88
                final IconThemeManager iconManager = ToolsSwingLocator.getIconThemeManager();
89
                this.setLayout(new BorderLayout());
90
                
91
                this.panel = new IconThemePageLayout();
92

    
93
                panel.combo_selection.setModel(new ComboBoxModel() {
94
                        IconTheme selected = null;
95
                        public void removeListDataListener(ListDataListener arg0) {
96
                                // Do nothing
97
                        }
98
                        public int getSize() {
99
                                return iconManager.getCount();
100
                        }
101
                        public Object getElementAt(int arg0) {
102
                                return iconManager.get(arg0);
103
                        }
104
                        public void addListDataListener(ListDataListener arg0) {
105
                                // Do nothing
106
                        }
107
                        public void setSelectedItem(Object arg0) {
108
                                this.selected = (IconTheme) arg0;
109
                        }
110
                        public Object getSelectedItem() {
111
                                return this.selected;
112
                        }
113
                });
114
                
115
                panel.button_export.addActionListener(new ActionListener() {
116
                        public void actionPerformed(ActionEvent arg0) {
117
                                createDefaultIconTheme();
118
                        }
119
                });
120
                
121
                // Traducir las etiquetas del panel
122
                panel.label_title.setText(translate(panel.label_title.getText()));
123
                panel.label_selection.setText(translate(panel.label_selection.getText()));
124
                panel.button_export.setText(translate(panel.button_export.getText()));
125
                
126
                this.add(panel, BorderLayout.CENTER);
127
        }
128
        
129
        private String translate(String s) {
130
                return PluginServices.getText(this,s);
131
        }
132
        
133
        private void createDefaultIconTheme() {
134
                PluginsManager pluginsManager = PluginsLocator.getManager();
135
                IconThemeManager iconManager = ToolsSwingLocator.getIconThemeManager();
136
                
137
                File f = new File(pluginsManager.getApplicationHomeFolder(),"icon-theme");
138
                if( !f.exists() ) {
139
                        f.mkdir();
140
                }
141
                IconTheme theme = iconManager.getDefault();
142
                File f2 = new File(f,theme.getID()) ;
143
                if( !f2.exists() ) {
144
                        logger.info("Creating default icon theme in "+f.getAbsolutePath());
145
                        theme.export(f);
146
                }
147
        }
148
} 
149