Statistics
| Revision:

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

History | View | Annotate | Download (5.81 KB)

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

    
3
import java.awt.BorderLayout;
4
import java.awt.event.MouseEvent;
5
import java.awt.event.MouseListener;
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.preferences.AbstractPreferencePage;
14
import org.gvsig.andami.preferences.StoreException;
15
import org.gvsig.andami.ui.mdiManager.IWindow;
16
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
17
import org.gvsig.app.project.documents.view.toolListeners.snapping.gui.SnapConfig;
18
import org.gvsig.fmap.mapcontrol.MapControl;
19
import org.gvsig.fmap.mapcontrol.MapControlLocator;
20
import org.gvsig.fmap.mapcontrol.MapControlManager;
21
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapper;
22

    
23

    
24

    
25

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

    
39
    public SnapConfigPage() {
40
        super();
41
        this.setLayout(new BorderLayout());
42
        IWindow window=PluginServices.getMDIManager().getActiveWindow();
43
        if (window instanceof DefaultViewPanel) {
44
            
45
            mc = ((DefaultViewPanel)window).getMapControl();
46
            snapConfig = new SnapConfig(mc, new MouseListener() {
47
                /*
48
                 * Any mouse event in the relevant components
49
                 * of SnapConfig will cause changed = true 
50
                 */
51
                public void mousePressed(MouseEvent e) {
52
                    setChanged(true);
53
                }
54
                public void mouseReleased(MouseEvent e) { }
55
                public void mouseExited(MouseEvent e) { }
56
                public void mouseEntered(MouseEvent e) { }
57
                public void mouseClicked(MouseEvent e) { }
58
            });
59
            
60
            snapConfig.setSnappers();
61
            add(snapConfig, BorderLayout.CENTER);
62
        }
63

    
64
    }    
65

    
66
    /**
67
     * DOCUMENT ME!
68
     *
69
     * @throws StoreException DOCUMENT ME!
70
     */
71
    public void storeValues() throws StoreException {
72
            for (int n = 0; n < mapControlManager.getSnapperCount(); n++) {
73
            Boolean b = (Boolean) snapConfig.getTableModel().getValueAt(n, 0);
74
            ISnapper snp = (ISnapper) mapControlManager.getSnapperAt(n);
75
            String nameClass=snp.getClass().getName();
76
            nameClass=nameClass.substring(nameClass.lastIndexOf('.'));
77
            prefs.putBoolean("snapper_activated" + nameClass, b.booleanValue());
78
            if (b.booleanValue()){
79
                    snp.setEnabled(b);                    
80
            }
81
            prefs.putInt("snapper_priority"+ nameClass,snp.getPriority());
82
        }
83
        boolean b=snapConfig.applySnappers();
84
        prefs.putBoolean("apply-snappers",b);
85
        applySnappers=b;
86
    }
87

    
88
    /**
89
     * DOCUMENT ME!
90
     */
91
    public void setChangesApplied() {
92
            setChanged(false);
93
    }
94

    
95
    /**
96
     * DOCUMENT ME!
97
     *
98
     * @return DOCUMENT ME!
99
     */
100
    public String getID() {
101
        return this.getClass().getName();
102
    }
103

    
104
    /**
105
     * DOCUMENT ME!
106
     *
107
     * @return DOCUMENT ME!
108
     */
109
    public String getTitle() {
110
        return PluginServices.getText(this, "Snapping");
111
    }
112

    
113
    /**
114
     * DOCUMENT ME!
115
     *
116
     * @return DOCUMENT ME!
117
     */
118
    public JPanel getPanel() {
119
        return this;
120
    }
121

    
122
    /**
123
     * DOCUMENT ME!
124
     */
125
    public void initializeValues() {
126
            if (prefs.get("apply-snappers", null) == null){
127
                    initializeDefaults();
128
            }
129

    
130
        applySnappers = prefs.getBoolean("apply-snappers",true);
131
        snapConfig.setApplySnappers(applySnappers);
132
        snapConfig.selectSnappers();
133
    }
134

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

    
165
    /**
166
     * DOCUMENT ME!
167
     *
168
     * @return DOCUMENT ME!
169
     */
170
    public ImageIcon getIcon() {
171
        return IconThemeHelper.getImageIcon("preferences-snapper");
172
    }
173

    
174
    /**
175
     * DOCUMENT ME!
176
     *
177
     * @return DOCUMENT ME!
178
     */
179
    public boolean isValueChanged() {
180
            return super.hasChanged();
181
    }
182
        
183
    /*
184
     * (non-Javadoc)
185
     * @see org.gvsig.andami.preferences.AbstractPreferencePage#isResizeable()
186
     */
187
        public boolean isResizeable() {
188
                return true;
189
        }
190
        
191
    
192
    
193
}