/[schmitzm]/branches/2.1/src/skrueger/geotools/selection/FeatureMapLayerSelectionSynchronizer.java
ViewVC logotype

Diff of /branches/2.1/src/skrueger/geotools/selection/FeatureMapLayerSelectionSynchronizer.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 97 by alfonx, Fri May 8 12:10:42 2009 UTC revision 105 by alfonx, Fri May 8 15:02:28 2009 UTC
# Line 22  import javax.swing.JTable; Line 22  import javax.swing.JTable;
22  import javax.swing.ListSelectionModel;  import javax.swing.ListSelectionModel;
23  import javax.swing.event.ListSelectionEvent;  import javax.swing.event.ListSelectionEvent;
24  import javax.swing.event.ListSelectionListener;  import javax.swing.event.ListSelectionListener;
25    import javax.swing.text.Utilities;
26    
27  import org.geotools.feature.Feature;  import org.geotools.feature.Feature;
28  import org.geotools.map.MapLayer;  import org.geotools.map.MapLayer;
29    import org.geotools.styling.Rule;
30    import org.geotools.styling.RuleImpl;
31  import org.geotools.styling.Style;  import org.geotools.styling.Style;
32    import org.geotools.styling.StyleImpl;
33    import org.geotools.styling.Symbolizer;
34    import org.opengis.filter.Filter;
35    import org.opengis.filter.FilterVisitor;
36    import org.opengis.layer.StyleURL;
37    
38  import schmitzm.geotools.gui.FeatureCollectionTableModel;  import schmitzm.geotools.gui.FeatureCollectionTableModel;
39  import schmitzm.geotools.gui.JMapPane;  import schmitzm.geotools.gui.JMapPane;
# Line 33  import schmitzm.geotools.map.event.Featu Line 41  import schmitzm.geotools.map.event.Featu
41  import schmitzm.geotools.map.event.JMapPaneEvent;  import schmitzm.geotools.map.event.JMapPaneEvent;
42  import schmitzm.geotools.map.event.JMapPaneListener;  import schmitzm.geotools.map.event.JMapPaneListener;
43  import schmitzm.geotools.styling.StylingUtil;  import schmitzm.geotools.styling.StylingUtil;
44    import schmitzm.lang.LangUtil;
45  import skrueger.geotools.StyledFeatureCollectionInterface;  import skrueger.geotools.StyledFeatureCollectionInterface;
46  import skrueger.geotools.StyledMapInterface;  import skrueger.geotools.StyledMapInterface;
47  import skrueger.geotools.selection.StyledFeatureLayerSelectionModel;  import skrueger.geotools.selection.StyledFeatureLayerSelectionModel;
# Line 58  import skrueger.geotools.selection.Style Line 67  import skrueger.geotools.selection.Style
67   *         (University of Bonn/Germany)   *         (University of Bonn/Germany)
68   */   */
69  public class FeatureMapLayerSelectionSynchronizer extends  public class FeatureMapLayerSelectionSynchronizer extends
70                  StyledLayerSelectionModelSynchronizer<Feature> implements                  StyledLayerSelectionModelSynchronizer<StyledFeatureLayerSelectionModel> implements
71                  JMapPaneListener {                  JMapPaneListener {
72          /**          /**
73           * Holds the {@link MapLayer} to keep synchronized with the layer selection           * Holds the {@link MapLayer} to keep synchronized with the layer selection
# Line 124  public class FeatureMapLayerSelectionSyn Line 133  public class FeatureMapLayerSelectionSyn
133                  selectionChangeCausedByMe = false;                  selectionChangeCausedByMe = false;
134          }          }
135    
136          private void changeLayerStyle(Vector<Feature> newSelection) {          private void changeLayerStyle(final Vector<Feature> newSelection) {
137                  Style selectionMapStyle = null;                  Style selectionMapStyle = null;
138                  try {                  try {
139                          if (newSelection.isEmpty()) {                          if (newSelection.isEmpty()) {
140    
                                 LOGGER.debug("NO SELECTION");  
141                                  selectionMapStyle = styledMapLayer.getStyle();                                  selectionMapStyle = styledMapLayer.getStyle();
142                                    LOGGER.debug("NO SELECTION .. reset original style");
143                                    
144                          } else {                          } else {
145                                  LOGGER.debug("SELECTION EXISTEnT");                                  LOGGER.debug("SELECTION .. change style");
146                                  selectionMapStyle = StylingUtil                                  
147                                                  .createDefaultStyle(styledMapLayer.getGeoObject());                                  Style originalStyle = styledMapLayer.getStyle();
148                                    
149                                    // TODO This clone is a deep clone and it is slow..
150                                    selectionMapStyle =  StylingUtil.clone(originalStyle);
151                                    
152                                    
153                                    Rule selectedRule = StylingUtil.STYLE_FACTORY.createRule();
154                                    selectedRule.setFilter(new Filter() {
155    
156                                            @Override
157                                            public Object accept(FilterVisitor visitor, Object extraData) {
158                                                    return null;
159                                            }
160    
161                                            @Override
162                                            public boolean evaluate(Object obj) {
163                                                    if (obj instanceof Feature) {
164                                                            Feature f = (Feature)obj;
165                                                            LOGGER.info("treffer");
166                                                            // TODO BAD CODE
167                                                            for (Feature ff : newSelection){
168                                                                    if (ff.getID().equals(f.getID())) return true;
169                                                            }
170                                                            return false;
171                                                            
172                                                    }
173                                                    LOGGER.info("kein treffer");
174                                                    return false;
175                                            }
176                                            
177                                    });
178                                    
179                                    Style defaultStyle = StylingUtil.createDefaultStyle(styledMapLayer.getGeoObject());
180                                    selectedRule.setSymbolizers(new Symbolizer[] {defaultStyle.getFeatureTypeStyles()[0].getRules()[0].getSymbolizers()[0]} );
181                                    
182                                    Rule[] rules = selectionMapStyle.getFeatureTypeStyles()[0].getRules();
183                                    rules = LangUtil.extendArray(rules, selectedRule);
184                                    
185                                    selectionMapStyle.getFeatureTypeStyles()[0].setRules(rules);
186                                    
187    //                              selectionMapStyle.setFeatureTypeStyles(originalStyle.getF)
188                                    
189                                    // Flat copy the style
190                                    
191    //                              selectionMapStyle = StylingUtil.createDefaultStyle(styledMapLayer.getGeoObject());
192                                    
193                                    
194                          }                          }
195    
196                          mapLayer.setStyle(selectionMapStyle);                          mapLayer.setStyle(selectionMapStyle);
# Line 160  public class FeatureMapLayerSelectionSyn Line 216  public class FeatureMapLayerSelectionSyn
216    
217          @Override          @Override
218          public void performMapPaneEvent(JMapPaneEvent e) {          public void performMapPaneEvent(JMapPaneEvent e) {
219                  if (!(e instanceof FeatureSelectedEvent))                  
220                    if (!(e instanceof FeatureSelectedEvent)) {
221                            LOGGER.debug("Ignoring event "+e);
222                          return;                          return;
223                    }
224    
225                  FeatureSelectedEvent fse = (FeatureSelectedEvent) e;                  FeatureSelectedEvent fse = (FeatureSelectedEvent) e;
226                    LOGGER.debug("Do event "+fse);
227                    LOGGER.debug("Do event "+fse.getSelectionResult());
228    
229                  // ignore event if it is caused by the DpLayerVectorSelectionModel                  // ignore event if it is caused by the DpLayerVectorSelectionModel
230                  if (selectionChangeCausedByMe)                  if (selectionChangeCausedByMe)

Legend:
Removed from v.97  
changed lines
  Added in v.105

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26