Statistics
| Revision:

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

History | View | Annotate | Download (5.48 KB)

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

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

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

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

    
28

    
29

    
30

    
31
/**
32
 * Preferencias de snapping.
33
 *
34
 * @author Vicente Caballero Navarro
35
 */
36
public class SnapConfigPage extends AbstractPreferencePage {
37
    private static Preferences prefs = Preferences.userRoot().node("snappers");
38
    private SnapConfig snapConfig;   
39
        private static boolean applySnappers=true;
40
    @SuppressWarnings("unchecked")
41
    private MapControl mc=null;
42
    private static MapControlManager mapControlManager = MapControlLocator.getMapControlManager();
43

    
44
    public SnapConfigPage() {
45
        super();
46
        this.setLayout(new BorderLayout());
47
        IWindow window=PluginServices.getMDIManager().getActiveWindow();
48
        if (window instanceof DefaultViewPanel){
49
                mc=((DefaultViewPanel)window).getMapControl();
50
                 snapConfig = new SnapConfig(mc);
51
             snapConfig.setSnappers();
52
             add(snapConfig, BorderLayout.CENTER);
53
        }
54

    
55
    }    
56

    
57
    /**
58
     * DOCUMENT ME!
59
     *
60
     * @throws StoreException DOCUMENT ME!
61
     */
62
    public void storeValues() throws StoreException {
63
            for (int n = 0; n < mapControlManager.getSnapperCount(); n++) {
64
            Boolean b = (Boolean) snapConfig.getTableModel().getValueAt(n, 0);
65
            ISnapper snp = (ISnapper) mapControlManager.getSnapperAt(n);
66
            String nameClass=snp.getClass().getName();
67
            nameClass=nameClass.substring(nameClass.lastIndexOf('.'));
68
            prefs.putBoolean("snapper_activated" + nameClass, b.booleanValue());
69
            if (b.booleanValue()){
70
                    snp.setEnabled(b);                    
71
            }
72
            prefs.putInt("snapper_priority"+ nameClass,snp.getPriority());
73
        }
74
        boolean b=snapConfig.applySnappers();
75
        prefs.putBoolean("apply-snappers",b);
76
        applySnappers=b;
77
    }
78

    
79
    /**
80
     * DOCUMENT ME!
81
     */
82
    public void setChangesApplied() {
83
            setChanged(false);
84
    }
85

    
86
    /**
87
     * DOCUMENT ME!
88
     *
89
     * @return DOCUMENT ME!
90
     */
91
    public String getID() {
92
        return this.getClass().getName();
93
    }
94

    
95
    /**
96
     * DOCUMENT ME!
97
     *
98
     * @return DOCUMENT ME!
99
     */
100
    public String getTitle() {
101
        return PluginServices.getText(this, "Snapping");
102
    }
103

    
104
    /**
105
     * DOCUMENT ME!
106
     *
107
     * @return DOCUMENT ME!
108
     */
109
    public JPanel getPanel() {
110
        return this;
111
    }
112

    
113
    /**
114
     * DOCUMENT ME!
115
     */
116
    public void initializeValues() {
117
            if (prefs.get("apply-snappers", null) == null){
118
                    initializeDefaults();
119
            }
120

    
121
        applySnappers = prefs.getBoolean("apply-snappers",true);
122
        snapConfig.setApplySnappers(applySnappers);
123
        snapConfig.selectSnappers();
124
    }
125

    
126
    /**
127
     * DOCUMENT ME!
128
     */
129
    public void initializeDefaults() {
130
            for (int n = 0; n < mapControlManager.getSnapperCount(); n++) {
131
            ISnapper snp = mapControlManager.getSnapperAt(n);
132
            String nameClass=snp.getClass().getName();
133
            nameClass=nameClass.substring(nameClass.lastIndexOf('.'));
134
            if (nameClass.equals(".FinalPointSnapper")){
135
                    int priority = 1;
136
                    prefs.putInt("snapper_priority" + nameClass, priority);
137
                    snp.setEnabled(true);            
138
                    snp.setPriority(priority);
139
            }else if (nameClass.equals(".NearestPointSnapper")){
140
                    int priority = 2;
141
                    prefs.putInt("snapper_priority" + nameClass, priority);
142
                    snp.setEnabled(true);                    
143
                    snp.setPriority(priority);
144
            }else{
145
                    int priority = 3;
146
                    prefs.putInt("snapper_priority" + nameClass, priority);
147
                    snp.setEnabled(false);                    
148
                    snp.setPriority(priority);
149
            }
150
        }
151
        applySnappers = true;
152
        snapConfig.setApplySnappers(applySnappers);
153
        snapConfig.selectSnappers();
154
    }
155

    
156
    /**
157
     * DOCUMENT ME!
158
     *
159
     * @return DOCUMENT ME!
160
     */
161
    public ImageIcon getIcon() {
162
        return IconThemeHelper.getImageIcon("preferences-snapper");
163
    }
164

    
165
    /**
166
     * DOCUMENT ME!
167
     *
168
     * @return DOCUMENT ME!
169
     */
170
    public boolean isValueChanged() {
171
            return super.hasChanged();
172
    }
173
        
174
    /*
175
     * (non-Javadoc)
176
     * @see org.gvsig.andami.preferences.AbstractPreferencePage#isResizeable()
177
     */
178
        public boolean isResizeable() {
179
                return true;
180
        }
181
    
182
    
183
}