Statistics
| Revision:

root / trunk / extensions / extCAD / src / com / iver / cit / gvsig / gui / preferences / SnapConfigPage.java @ 8939

History | View | Annotate | Download (5.38 KB)

1
package com.iver.cit.gvsig.gui.preferences;
2

    
3
import java.util.ArrayList;
4
import java.util.Comparator;
5
import java.util.Iterator;
6
import java.util.TreeMap;
7
import java.util.prefs.Preferences;
8

    
9
import javax.swing.ImageIcon;
10
import javax.swing.JPanel;
11

    
12
import com.iver.andami.PluginServices;
13
import com.iver.andami.preferences.AbstractPreferencePage;
14
import com.iver.andami.preferences.StoreException;
15
import com.iver.cit.gvsig.project.documents.view.snapping.ISnapper;
16
import com.iver.cit.gvsig.project.documents.view.snapping.gui.SnapConfig;
17
import com.iver.utiles.extensionPoints.ExtensionPoint;
18
import com.iver.utiles.extensionPoints.ExtensionPoints;
19
import com.iver.utiles.extensionPoints.ExtensionPointsSingleton;
20

    
21

    
22
/**
23
 * Preferencias de snapping.
24
 *
25
 * @author Vicente Caballero Navarro
26
 */
27
public class SnapConfigPage extends AbstractPreferencePage {
28
    private static Preferences prefs = Preferences.userRoot().node("snappers");
29
    private ImageIcon icon;
30
    private SnapConfig snapConfig;
31
    private ArrayList snappers = new ArrayList();
32
        private static boolean applySnappers=true;
33
    private static TreeMap selected = new TreeMap(new Comparator() {
34
        public int compare(Object o1, Object o2) {
35
            if ((o1 != null) && (o2 != null)) {
36
                ISnapper v2 = (ISnapper) o2;
37
                ISnapper v1 = (ISnapper) o1;
38
                if (v1.getPriority()>v2.getPriority())
39
                        return -1;
40
                else if (v1.getPriority()<v2.getPriority())
41
                            return 1;
42
                else if (v1.getClass() == v2.getClass()) {
43
                        return 0;
44
                }else
45
                        return -1;
46
            }
47
            return 0;
48
        }
49
    }); // Para poder ordenar
50

    
51
    static {
52
            new SnapConfigPage().initializeValues();
53
    }
54

    
55

    
56
    public SnapConfigPage() {
57
        super();
58
        icon = new ImageIcon(this.getClass().getClassLoader().getResource("images/Snapper.png"));
59
        snapConfig = new SnapConfig();
60
        snappers = getSnappers();
61
        snapConfig.setSnappers(snappers);
62
        addComponent(snapConfig);
63
    }
64

    
65
    /**
66
     * DOCUMENT ME!
67
     *
68
     * @return DOCUMENT ME!
69
     */
70
    private static ArrayList getSnappers() {
71
        ArrayList snappers = new ArrayList();
72
        ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
73

    
74
        ExtensionPoint extensionPoint = (ExtensionPoint) extensionPoints.get(
75
                "Snapper");
76
        Iterator iterator = extensionPoint.keySet().iterator();
77

    
78
        while (iterator.hasNext()) {
79
            try {
80
                ISnapper snapper = (ISnapper) extensionPoint.create((String) iterator.next());
81
                snappers.add(snapper);
82
            } catch (InstantiationException e) {
83
                e.printStackTrace();
84
            } catch (IllegalAccessException e) {
85
                e.printStackTrace();
86
            }
87
        }
88

    
89
        return snappers;
90
    }
91
    /**
92
     * DOCUMENT ME!
93
     *
94
     * @return DOCUMENT ME!
95
     */
96
    public static ArrayList getActivesSnappers() {
97
       if (!applySnappers)
98
               return new ArrayList();
99
       return new ArrayList(selected.keySet());
100
    }
101

    
102
    /**
103
     * DOCUMENT ME!
104
     *
105
     * @throws StoreException DOCUMENT ME!
106
     */
107
    public void storeValues() throws StoreException {
108
        selected.clear();
109
            for (int n = 0; n < snappers.size(); n++) {
110
            Boolean b = (Boolean) snapConfig.getTableModel().getValueAt(n, 0);
111
            ISnapper snp = (ISnapper) snappers.get(n);
112
            String nameClass=snp.getClass().getName();
113
            nameClass=nameClass.substring(nameClass.lastIndexOf('.'));
114
            prefs.putBoolean("snapper_" + nameClass, b.booleanValue());
115
            if (b.booleanValue())
116
                    selected.put(snp, b);
117
        }
118
        boolean b=snapConfig.applySnappers();
119
        prefs.putBoolean("apply-snappers",b);
120
        applySnappers=b;
121
    }
122

    
123
    /**
124
     * DOCUMENT ME!
125
     */
126
    public void setChangesApplied() {
127
            setChanged(false);
128
    }
129

    
130
    /**
131
     * DOCUMENT ME!
132
     *
133
     * @return DOCUMENT ME!
134
     */
135
    public String getID() {
136
        return this.getClass().getName();
137
    }
138

    
139
    /**
140
     * DOCUMENT ME!
141
     *
142
     * @return DOCUMENT ME!
143
     */
144
    public String getTitle() {
145
        return PluginServices.getText(this, "Snapping");
146
    }
147

    
148
    /**
149
     * DOCUMENT ME!
150
     *
151
     * @return DOCUMENT ME!
152
     */
153
    public JPanel getPanel() {
154
        return this;
155
    }
156

    
157
    /**
158
     * DOCUMENT ME!
159
     */
160
    public void initializeValues() {
161
        for (int n = 0; n < snappers.size(); n++) {
162
            ISnapper snp = (ISnapper) snappers.get(n);
163
            String nameClass=snp.getClass().getName();
164
            nameClass=nameClass.substring(nameClass.lastIndexOf('.'));
165
            boolean select = prefs.getBoolean("snapper_" + nameClass, false);
166
            if (select)
167
                    selected.put(snp, new Boolean(select));
168
        }
169
        prefs.getBoolean("apply-snappers",true);
170
        applySnappers=true;
171
        snapConfig.setApplySnappers(applySnappers);
172
        snapConfig.selectSnappers(selected);
173

    
174
    }
175

    
176
    /**
177
     * DOCUMENT ME!
178
     */
179
    public void initializeDefaults() {
180
        initializeValues();
181
    }
182

    
183
    /**
184
     * DOCUMENT ME!
185
     *
186
     * @return DOCUMENT ME!
187
     */
188
    public ImageIcon getIcon() {
189
        return icon;
190
    }
191

    
192
    /**
193
     * DOCUMENT ME!
194
     *
195
     * @return DOCUMENT ME!
196
     */
197
    public boolean isValueChanged() {
198
            return super.hasChanged();
199
    }
200
}