Statistics
| Revision:

root / branches / v2_0_0_prep / extensions / extEditing / src / org / gvsig / editing / gui / preferences / SnapConfigPage.java @ 29685

History | View | Annotate | Download (7.35 KB)

1
package org.gvsig.editing.gui.preferences;
2

    
3
import java.util.ArrayList;
4
import java.util.Iterator;
5
import java.util.prefs.Preferences;
6

    
7
import javax.swing.ImageIcon;
8
import javax.swing.JPanel;
9

    
10
import org.gvsig.andami.PluginServices;
11
import org.gvsig.andami.messages.NotificationManager;
12
import org.gvsig.andami.preferences.AbstractPreferencePage;
13
import org.gvsig.andami.preferences.StoreException;
14
import org.gvsig.andami.ui.mdiManager.IWindow;
15
import org.gvsig.app.project.documents.view.gui.View;
16
import org.gvsig.app.project.documents.view.toolListeners.snapping.gui.SnapConfig;
17
import org.gvsig.fmap.mapcontrol.MapControl;
18
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapper;
19
import org.gvsig.tools.ToolsLocator;
20
import org.gvsig.tools.extensionpoint.ExtensionPoint;
21
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
22
import org.gvsig.tools.extensionpoint.ExtensionPoint.Extension;
23

    
24

    
25

    
26

    
27
/**
28
 * Preferencias de snapping.
29
 *
30
 * @author Vicente Caballero Navarro
31
 */
32
public class SnapConfigPage extends AbstractPreferencePage {
33
    private static Preferences prefs = Preferences.userRoot().node("snappers");
34
    private ImageIcon icon;
35
    private SnapConfig snapConfig;
36
    private ArrayList<ISnapper> snappers = new ArrayList<ISnapper>();
37
        private static boolean applySnappers=true;
38
    @SuppressWarnings("unchecked")
39
//        private static HashMap<ISnapper,Boolean> selected = new HashMap<ISnapper,Boolean>();
40
    private MapControl mc=null;
41

    
42
//    static {
43
//            new SnapConfigPage().initializeValues();
44
//    }
45

    
46

    
47
    public SnapConfigPage() {
48
        super();
49
        icon = new ImageIcon(this.getClass().getClassLoader().getResource("images/Snapper.png"));
50
        IWindow window=PluginServices.getMDIManager().getActiveWindow();
51
        if (window instanceof View){
52
                mc=((View)window).getMapControl();
53
                 snapConfig = new SnapConfig(mc);
54
             snappers = getSnappers();
55
             snapConfig.setSnappers(snappers);
56
             addComponent(snapConfig);
57
        }
58

    
59
    }
60

    
61
    /**
62
     * DOCUMENT ME!
63
     *
64
     * @return DOCUMENT ME!
65
     */
66
    private static ArrayList<ISnapper> getSnappers() {
67
        ArrayList<ISnapper> snappers = new ArrayList<ISnapper>();
68
        ExtensionPointManager extensionPoints =ToolsLocator.getExtensionPointManager();
69

    
70
        ExtensionPoint ep = extensionPoints.get("Snapper");
71

    
72
//        ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance();
73

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

    
78
        while (iterator.hasNext()) {
79
            try {
80
                    Extension obj= (Extension)iterator.next();
81
                ISnapper snapper = (ISnapper) ep.create(obj.getName());
82
                snappers.add(snapper);
83
            } catch (InstantiationException e) {
84
                    NotificationManager.addError(e.getMessage(),e);
85
            } catch (IllegalAccessException e) {
86
                    NotificationManager.addError(e.getMessage(),e);
87
            }
88
        }
89

    
90
        return snappers;
91
    }
92
    /**
93
     * DOCUMENT ME!
94
     *
95
     * @return DOCUMENT ME!
96
     */
97
    public ArrayList<ISnapper> getActivesSnappers() {
98
       if (!applySnappers)
99
               return new ArrayList<ISnapper>();
100
       return new ArrayList<ISnapper>(mc.getSelectedSnapppers().keySet());
101
    }
102

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

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

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

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

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

    
159
    /**
160
     * DOCUMENT ME!
161
     */
162
    public void initializeValues() {
163
            if (prefs.get("apply-snappers", null) == null){
164
                    initializeDefaults();
165
            }
166
            for (int n = 0; n < snappers.size(); n++) {
167
            ISnapper snp = (ISnapper) snappers.get(n);
168
            String nameClass=snp.getClass().getName();
169
            nameClass=nameClass.substring(nameClass.lastIndexOf('.'));
170
            boolean select = prefs.getBoolean("snapper_activated" + nameClass, false);
171
            if (select)
172
                    mc.getSelectedSnapppers().put(snp, new Boolean(select));
173
            int priority = prefs.getInt("snapper_priority" + nameClass,3);
174
            snp.setPriority(priority);
175
        }
176
        applySnappers = prefs.getBoolean("apply-snappers",true);
177
        snapConfig.setApplySnappers(applySnappers);
178
        snapConfig.selectSnappers(mc.getSelectedSnapppers());
179
        mc.getMapContext().setSnappers(new ArrayList(mc.getSelectedSnapppers().keySet()));
180

    
181
    }
182

    
183
    /**
184
     * DOCUMENT ME!
185
     */
186
    public void initializeDefaults() {
187
            for (int n = 0; n < snappers.size(); n++) {
188
            ISnapper snp = (ISnapper) snappers.get(n);
189
            String nameClass=snp.getClass().getName();
190
            nameClass=nameClass.substring(nameClass.lastIndexOf('.'));
191
            if (nameClass.equals(".FinalPointSnapper")){
192
                    int priority = 1;
193
                    prefs.putInt("snapper_priority" + nameClass, priority);
194
                    mc.getSelectedSnapppers().put(snp, new Boolean(true));
195
                    snp.setPriority(priority);
196
            }else if (nameClass.equals(".NearestPointSnapper")){
197
                    int priority = 2;
198
                    prefs.putInt("snapper_priority" + nameClass, priority);
199
                    mc.getSelectedSnapppers().put(snp, new Boolean(true));
200
                    snp.setPriority(priority);
201
            }else{
202
                    int priority = 3;
203
                    prefs.putInt("snapper_priority" + nameClass, priority);
204
                    mc.getSelectedSnapppers().put(snp, new Boolean(false));
205
                    snp.setPriority(priority);
206
            }
207
        }
208
        applySnappers = true;
209
        snapConfig.setApplySnappers(applySnappers);
210
        snapConfig.selectSnappers(mc.getSelectedSnapppers());
211
    }
212

    
213
    /**
214
     * DOCUMENT ME!
215
     *
216
     * @return DOCUMENT ME!
217
     */
218
    public ImageIcon getIcon() {
219
        return icon;
220
    }
221

    
222
    /**
223
     * DOCUMENT ME!
224
     *
225
     * @return DOCUMENT ME!
226
     */
227
    public boolean isValueChanged() {
228
            return super.hasChanged();
229
    }
230
}