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 29685 jpiera
package org.gvsig.editing.gui.preferences;
2 23648 vcaballero
3 30372 jpiera
import java.awt.BorderLayout;
4 23648 vcaballero
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 38608 jjdelcerro
import org.gvsig.andami.IconThemeHelper;
12 29685 jpiera
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 31496 jjdelcerro
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
18 29685 jpiera
import org.gvsig.app.project.documents.view.toolListeners.snapping.gui.SnapConfig;
19 23648 vcaballero
import org.gvsig.fmap.mapcontrol.MapControl;
20 30335 jpiera
import org.gvsig.fmap.mapcontrol.MapControlLocator;
21
import org.gvsig.fmap.mapcontrol.MapControlManager;
22 23648 vcaballero
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapper;
23 26876 vcaballero
import org.gvsig.tools.ToolsLocator;
24
import org.gvsig.tools.extensionpoint.ExtensionPoint;
25
import org.gvsig.tools.extensionpoint.ExtensionPointManager;
26 27221 vcaballero
import org.gvsig.tools.extensionpoint.ExtensionPoint.Extension;
27 23648 vcaballero
28
29
30 29685 jpiera
31 23648 vcaballero
/**
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 30335 jpiera
    private SnapConfig snapConfig;
39 23648 vcaballero
        private static boolean applySnappers=true;
40
    @SuppressWarnings("unchecked")
41
    private MapControl mc=null;
42 30335 jpiera
    private static MapControlManager mapControlManager = MapControlLocator.getMapControlManager();
43 26876 vcaballero
44 23648 vcaballero
    public SnapConfigPage() {
45
        super();
46 30372 jpiera
        this.setLayout(new BorderLayout());
47 23648 vcaballero
        IWindow window=PluginServices.getMDIManager().getActiveWindow();
48 31496 jjdelcerro
        if (window instanceof DefaultViewPanel){
49
                mc=((DefaultViewPanel)window).getMapControl();
50 23648 vcaballero
                 snapConfig = new SnapConfig(mc);
51 30335 jpiera
             snapConfig.setSnappers();
52 30372 jpiera
             add(snapConfig, BorderLayout.CENTER);
53 23648 vcaballero
        }
54
55 30335 jpiera
    }
56 23648 vcaballero
57
    /**
58
     * DOCUMENT ME!
59
     *
60
     * @throws StoreException DOCUMENT ME!
61
     */
62
    public void storeValues() throws StoreException {
63 30335 jpiera
            for (int n = 0; n < mapControlManager.getSnapperCount(); n++) {
64 23648 vcaballero
            Boolean b = (Boolean) snapConfig.getTableModel().getValueAt(n, 0);
65 30335 jpiera
            ISnapper snp = (ISnapper) mapControlManager.getSnapperAt(n);
66 23648 vcaballero
            String nameClass=snp.getClass().getName();
67
            nameClass=nameClass.substring(nameClass.lastIndexOf('.'));
68
            prefs.putBoolean("snapper_activated" + nameClass, b.booleanValue());
69 30335 jpiera
            if (b.booleanValue()){
70
                    snp.setEnabled(b);
71
            }
72 23648 vcaballero
            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 28312 vcaballero
            if (prefs.get("apply-snappers", null) == null){
118
                    initializeDefaults();
119
            }
120 35614 jpiera
121 23648 vcaballero
        applySnappers = prefs.getBoolean("apply-snappers",true);
122
        snapConfig.setApplySnappers(applySnappers);
123 30335 jpiera
        snapConfig.selectSnappers();
124 23648 vcaballero
    }
125
126
    /**
127
     * DOCUMENT ME!
128
     */
129
    public void initializeDefaults() {
130 30335 jpiera
            for (int n = 0; n < mapControlManager.getSnapperCount(); n++) {
131
            ISnapper snp = mapControlManager.getSnapperAt(n);
132 23648 vcaballero
            String nameClass=snp.getClass().getName();
133
            nameClass=nameClass.substring(nameClass.lastIndexOf('.'));
134
            if (nameClass.equals(".FinalPointSnapper")){
135 28312 vcaballero
                    int priority = 1;
136
                    prefs.putInt("snapper_priority" + nameClass, priority);
137 30335 jpiera
                    snp.setEnabled(true);
138 28312 vcaballero
                    snp.setPriority(priority);
139 23648 vcaballero
            }else if (nameClass.equals(".NearestPointSnapper")){
140 28312 vcaballero
                    int priority = 2;
141
                    prefs.putInt("snapper_priority" + nameClass, priority);
142 30335 jpiera
                    snp.setEnabled(true);
143 28312 vcaballero
                    snp.setPriority(priority);
144 23648 vcaballero
            }else{
145 28312 vcaballero
                    int priority = 3;
146
                    prefs.putInt("snapper_priority" + nameClass, priority);
147 30335 jpiera
                    snp.setEnabled(false);
148 28312 vcaballero
                    snp.setPriority(priority);
149 23648 vcaballero
            }
150
        }
151
        applySnappers = true;
152
        snapConfig.setApplySnappers(applySnappers);
153 30335 jpiera
        snapConfig.selectSnappers();
154 23648 vcaballero
    }
155
156
    /**
157
     * DOCUMENT ME!
158
     *
159
     * @return DOCUMENT ME!
160
     */
161
    public ImageIcon getIcon() {
162 38608 jjdelcerro
        return IconThemeHelper.getImageIcon("preferences-snapper");
163 23648 vcaballero
    }
164
165
    /**
166
     * DOCUMENT ME!
167
     *
168
     * @return DOCUMENT ME!
169
     */
170
    public boolean isValueChanged() {
171
            return super.hasChanged();
172
    }
173 30372 jpiera
174
    /*
175
     * (non-Javadoc)
176
     * @see org.gvsig.andami.preferences.AbstractPreferencePage#isResizeable()
177
     */
178
        public boolean isResizeable() {
179
                return true;
180
        }
181
182
183 23648 vcaballero
}