Revision 8939

View differences:

trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/preferences/SnapConfigPage.java
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
}
0 201

  

Also available in: Unified diff