/[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 101 by alfonx, Fri May 8 13:17:02 2009 UTC revision 105 by alfonx, Fri May 8 15:02:28 2009 UTC
# Line 30  import org.geotools.styling.Rule; Line 30  import org.geotools.styling.Rule;
30  import org.geotools.styling.RuleImpl;  import org.geotools.styling.RuleImpl;
31  import org.geotools.styling.Style;  import org.geotools.styling.Style;
32  import org.geotools.styling.StyleImpl;  import org.geotools.styling.StyleImpl;
33    import org.geotools.styling.Symbolizer;
34  import org.opengis.filter.Filter;  import org.opengis.filter.Filter;
35  import org.opengis.filter.FilterVisitor;  import org.opengis.filter.FilterVisitor;
36  import org.opengis.layer.StyleURL;  import org.opengis.layer.StyleURL;
# Line 40  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 65  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 131  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()) {
# Line 147  public class FeatureMapLayerSelectionSyn Line 149  public class FeatureMapLayerSelectionSyn
149                                  // TODO This clone is a deep clone and it is slow..                                  // TODO This clone is a deep clone and it is slow..
150                                  selectionMapStyle =  StylingUtil.clone(originalStyle);                                  selectionMapStyle =  StylingUtil.clone(originalStyle);
151                                                                    
                                 Rule[] rules = selectionMapStyle.getFeatureTypeStyles()[0].getRules();  
152                                                                    
153                                  Rule selectedRule = StylingUtil.STYLE_FACTORY.createRule();                                  Rule selectedRule = StylingUtil.STYLE_FACTORY.createRule();
154                                  selectedRule.setFilter(new Filter() {                                  selectedRule.setFilter(new Filter() {
# Line 159  public class FeatureMapLayerSelectionSyn Line 160  public class FeatureMapLayerSelectionSyn
160    
161                                          @Override                                          @Override
162                                          public boolean evaluate(Object obj) {                                          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;                                                  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)  //                              selectionMapStyle.setFeatureTypeStyles(originalStyle.getF)
188                                                                    
189                                  // Flat copy the style                                  // Flat copy the style
190                                                                    
191                                    //                              selectionMapStyle = StylingUtil.createDefaultStyle(styledMapLayer.getGeoObject());
192                                                                    
193                                                                    
194                          }                          }
# Line 198  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.101  
changed lines
  Added in v.105

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26