Changeset 8509 in josm for trunk/src/org/openstreetmap/josm/data/osm
- Timestamp:
- 2015-06-20T14:36:00+02:00 (9 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/data/osm
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java
r8444 r8509 268 268 OsmPrimitive targetMember = getMergeTarget(sourceMember.getMember()); 269 269 if (targetMember == null) 270 throw new IllegalStateException(tr("Missing merge target of type {0} with id {1}", sourceMember.getType(), sourceMember.getUniqueId())); 270 throw new IllegalStateException(tr("Missing merge target of type {0} with id {1}", 271 sourceMember.getType(), sourceMember.getUniqueId())); 271 272 RelationMember newMember = new RelationMember(sourceMember.getRole(), targetMember); 272 273 newMembers.add(newMember); … … 312 313 // take. We take target. 313 314 // 314 } else if (!target.isModified() && !source.isModified() && target.isVisible() != source.isVisible() && target.getVersion() == source.getVersion()) 315 } else if (!target.isModified() && !source.isModified() && target.isVisible() != source.isVisible() 316 && target.getVersion() == source.getVersion()) 315 317 // Same version, but different "visible" attribute and neither of them are modified. 316 318 // It indicates a serious problem in datasets. -
trunk/src/org/openstreetmap/josm/data/osm/MultipolygonBuilder.java
r8449 r8509 369 369 } 370 370 371 private static List<PolygonLevel> processOuterWay(int level, List<JoinedPolygon> boundaryWays, final List<PolygonLevel> result, JoinedPolygon outerWay) { 371 private static List<PolygonLevel> processOuterWay(int level, List<JoinedPolygon> boundaryWays, 372 final List<PolygonLevel> result, JoinedPolygon outerWay) { 372 373 Pair<Boolean, List<JoinedPolygon>> p = findInnerWaysCandidates(outerWay, boundaryWays); 373 374 if (p == null) { -
trunk/src/org/openstreetmap/josm/data/osm/Node.java
r8444 r8509 164 164 * Constructs an identical clone of the argument. 165 165 * @param clone The node to clone 166 * @param clearMetadata If {@code true}, clears the OSM id and other metadata as defined by {@link #clearOsmMetadata}. If {@code false}, does nothing 166 * @param clearMetadata If {@code true}, clears the OSM id and other metadata as defined by {@link #clearOsmMetadata}. 167 * If {@code false}, does nothing 167 168 */ 168 169 public Node(Node clone, boolean clearMetadata) { -
trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
r8470 r8509 345 345 protected void writeUnlock(boolean locked) { 346 346 if (locked) { 347 // It shouldn't be possible for dataset to become null because method calling setDataset would need write lock which is owned by this thread 347 // It shouldn't be possible for dataset to become null because 348 // method calling setDataset would need write lock which is owned by this thread 348 349 dataSet.endUpdate(); 349 350 } … … 1141 1142 CheckParameterUtil.ensureParameterNotNull(other, "other"); 1142 1143 if (other.isNew() ^ isNew()) 1143 throw new DataIntegrityProblemException(tr("Cannot merge because either of the participating primitives is new and the other is not")); 1144 throw new DataIntegrityProblemException( 1145 tr("Cannot merge because either of the participating primitives is new and the other is not")); 1144 1146 if (!other.isNew() && other.getId() != id) 1145 throw new DataIntegrityProblemException(tr("Cannot merge primitives with different ids. This id is {0}, the other is {1}", id, other.getId())); 1147 throw new DataIntegrityProblemException( 1148 tr("Cannot merge primitives with different ids. This id is {0}, the other is {1}", id, other.getId())); 1146 1149 1147 1150 setKeys(other.getKeys()); -
trunk/src/org/openstreetmap/josm/data/osm/Relation.java
r8470 r8509 187 187 * Constructs an identical clone of the argument. 188 188 * @param clone The relation to clone 189 * @param clearMetadata If {@code true}, clears the OSM id and other metadata as defined by {@link #clearOsmMetadata}. If {@code false}, does nothing 189 * @param clearMetadata If {@code true}, clears the OSM id and other metadata as defined by {@link #clearOsmMetadata}. 190 * If {@code false}, does nothing 190 191 */ 191 192 public Relation(Relation clone, boolean clearMetadata) { … … 490 491 for (RelationMember rm: members) { 491 492 if (rm.getMember().getDataSet() != dataSet) 492 throw new DataIntegrityProblemException(String.format("Relation member must be part of the same dataset as relation(%s, %s)", getPrimitiveId(), rm.getMember().getPrimitiveId())); 493 throw new DataIntegrityProblemException( 494 String.format("Relation member must be part of the same dataset as relation(%s, %s)", 495 getPrimitiveId(), rm.getMember().getPrimitiveId())); 493 496 } 494 497 if (Main.pref.getBoolean("debug.checkDeleteReferenced", true)) { -
trunk/src/org/openstreetmap/josm/data/osm/Way.java
r8460 r8509 187 187 * Replies the ordered {@link List} of chunks of this way. Each chunk is replied as a {@link Pair} of {@link Node nodes}. 188 188 * @param sort If true, the nodes of each pair are sorted as defined by {@link Pair#sort}. 189 * If false, Pair.a and Pair.b are in the way order (i.e for a given Pair(n), Pair(n-1).b == Pair(n).a, Pair(n).b == Pair(n+1).a, etc.) 189 * If false, Pair.a and Pair.b are in the way order 190 * (i.e for a given Pair(n), Pair(n-1).b == Pair(n).a, Pair(n).b == Pair(n+1).a, etc.) 190 191 * @return The ordered list of chunks of this way. 191 192 * @since 3348 … … 234 235 * Contructs a new {@code Way} from an existing {@code Way}. 235 236 * @param original The original {@code Way} to be identically cloned. Must not be null 236 * @param clearMetadata If {@code true}, clears the OSM id and other metadata as defined by {@link #clearOsmMetadata}. If {@code false}, does nothing 237 * @param clearMetadata If {@code true}, clears the OSM id and other metadata as defined by {@link #clearOsmMetadata}. 238 * If {@code false}, does nothing 237 239 * @since 2410 238 240 */ … … 597 599 if (n.isDeleted()) 598 600 throw new DataIntegrityProblemException("Deleted node referenced: " + toString(), 599 "<html>" + tr("Deleted node referenced by {0}", DefaultNameFormatter.getInstance().formatAsHtmlUnorderedList(this)) + "</html>"); 601 "<html>" + tr("Deleted node referenced by {0}", 602 DefaultNameFormatter.getInstance().formatAsHtmlUnorderedList(this)) + "</html>"); 600 603 } 601 604 if (Main.pref.getBoolean("debug.checkNullCoor", true)) { -
trunk/src/org/openstreetmap/josm/data/osm/event/DatasetEventManager.java
r8285 r8509 29 29 private static final DatasetEventManager instance = new DatasetEventManager(); 30 30 31 public enum FireMode { 32 /** 33 * Fire in calling thread immediately. 34 */ 35 IMMEDIATELY, 36 /** 37 * Fire in event dispatch thread. 38 */ 39 IN_EDT, 40 /** 41 * Fire in event dispatch thread. If more than one event arrived when event queue is checked, merged them to 42 * one event 43 */ 44 IN_EDT_CONSOLIDATED} 45 46 private static class ListenerInfo { 47 private final DataSetListener listener; 48 private final boolean consolidate; 49 50 public ListenerInfo(DataSetListener listener, boolean consolidate) { 51 this.listener = listener; 52 this.consolidate = consolidate; 53 } 54 55 @Override 56 public int hashCode() { 57 return listener.hashCode(); 58 } 59 60 @Override 61 public boolean equals(Object o) { 62 return o instanceof ListenerInfo && ((ListenerInfo)o).listener == listener; 63 } 64 } 65 66 public static DatasetEventManager getInstance() { 67 return instance; 68 } 69 70 private final Queue<AbstractDatasetChangedEvent> eventsInEDT = new LinkedBlockingQueue<>(); 71 private final CopyOnWriteArrayList<ListenerInfo> inEDTListeners = new CopyOnWriteArrayList<>(); 72 private final CopyOnWriteArrayList<ListenerInfo> normalListeners = new CopyOnWriteArrayList<>(); 73 private final DataSetListener myListener = new DataSetListenerAdapter(this); 74 75 /** 76 * Constructs a new {@code DatasetEventManager}. 77 */ 78 public DatasetEventManager() { 79 MapView.addEditLayerChangeListener(this); 80 } 81 82 /** 83 * Register listener, that will receive events from currently active dataset 84 * @param listener the listener to be registered 85 * @param fireMode If {@link FireMode#IN_EDT} or {@link FireMode#IN_EDT_CONSOLIDATED}, 86 * listener will be notified in event dispatch thread instead of thread that caused 87 * the dataset change 88 */ 89 public void addDatasetListener(DataSetListener listener, FireMode fireMode) { 90 if (fireMode == FireMode.IN_EDT || fireMode == FireMode.IN_EDT_CONSOLIDATED) { 91 inEDTListeners.addIfAbsent(new ListenerInfo(listener, fireMode == FireMode.IN_EDT_CONSOLIDATED)); 92 } else { 93 normalListeners.addIfAbsent(new ListenerInfo(listener, false)); 94 } 95 } 96 97 public void removeDatasetListener(DataSetListener listener) { 98 ListenerInfo searchListener = new ListenerInfo(listener, false); 99 inEDTListeners.remove(searchListener); 100 normalListeners.remove(searchListener); 101 } 102 103 @Override 104 public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) { 105 if (oldLayer != null) { 106 oldLayer.data.removeDataSetListener(myListener); 107 } 108 109 if (newLayer != null) { 110 newLayer.data.addDataSetListener(myListener); 111 processDatasetEvent(new DataChangedEvent(newLayer.data)); 112 } else { 113 processDatasetEvent(new DataChangedEvent(null)); 114 } 115 } 116 117 private void fireEvents(List<ListenerInfo> listeners, AbstractDatasetChangedEvent event) { 118 for (ListenerInfo listener: listeners) { 119 if (!listener.consolidate) { 120 event.fire(listener.listener); 121 } 122 } 123 } 124 125 private void fireConsolidatedEvents(List<ListenerInfo> listeners, AbstractDatasetChangedEvent event) { 126 for (ListenerInfo listener: listeners) { 127 if (listener.consolidate) { 128 event.fire(listener.listener); 129 } 130 } 131 } 132 133 @Override 134 public void processDatasetEvent(AbstractDatasetChangedEvent event) { 135 fireEvents(normalListeners, event); 136 eventsInEDT.add(event); 137 SwingUtilities.invokeLater(edtRunnable); 138 } 139 140 private final Runnable edtRunnable = new Runnable() { 31 private final class EdtRunnable implements Runnable { 141 32 @Override 142 33 public void run() { 143 34 while (!eventsInEDT.isEmpty()) { 144 List<AbstractDatasetChangedEvent> events = new ArrayList<>(); 145 events.addAll(eventsInEDT); 35 List<AbstractDatasetChangedEvent> events = new ArrayList<>(eventsInEDT); 146 36 147 37 DataSet dataSet = null; … … 192 82 consolidatedEvent = new DataChangedEvent(dataSet, new ArrayList<>(Arrays.asList(consolidatedEvent))); 193 83 } 194 195 84 } 196 85 } … … 200 89 } 201 90 } 202 }; 91 } 92 93 public enum FireMode { 94 /** 95 * Fire in calling thread immediately. 96 */ 97 IMMEDIATELY, 98 /** 99 * Fire in event dispatch thread. 100 */ 101 IN_EDT, 102 /** 103 * Fire in event dispatch thread. If more than one event arrived when event queue is checked, merged them to 104 * one event 105 */ 106 IN_EDT_CONSOLIDATED} 107 108 private static class ListenerInfo { 109 private final DataSetListener listener; 110 private final boolean consolidate; 111 112 public ListenerInfo(DataSetListener listener, boolean consolidate) { 113 this.listener = listener; 114 this.consolidate = consolidate; 115 } 116 117 @Override 118 public int hashCode() { 119 return listener.hashCode(); 120 } 121 122 @Override 123 public boolean equals(Object o) { 124 return o instanceof ListenerInfo && ((ListenerInfo)o).listener == listener; 125 } 126 } 127 128 public static DatasetEventManager getInstance() { 129 return instance; 130 } 131 132 private final Queue<AbstractDatasetChangedEvent> eventsInEDT = new LinkedBlockingQueue<>(); 133 private final CopyOnWriteArrayList<ListenerInfo> inEDTListeners = new CopyOnWriteArrayList<>(); 134 private final CopyOnWriteArrayList<ListenerInfo> normalListeners = new CopyOnWriteArrayList<>(); 135 private final DataSetListener myListener = new DataSetListenerAdapter(this); 136 private final Runnable edtRunnable = new EdtRunnable(); 137 138 /** 139 * Constructs a new {@code DatasetEventManager}. 140 */ 141 public DatasetEventManager() { 142 MapView.addEditLayerChangeListener(this); 143 } 144 145 /** 146 * Register listener, that will receive events from currently active dataset 147 * @param listener the listener to be registered 148 * @param fireMode If {@link FireMode#IN_EDT} or {@link FireMode#IN_EDT_CONSOLIDATED}, 149 * listener will be notified in event dispatch thread instead of thread that caused 150 * the dataset change 151 */ 152 public void addDatasetListener(DataSetListener listener, FireMode fireMode) { 153 if (fireMode == FireMode.IN_EDT || fireMode == FireMode.IN_EDT_CONSOLIDATED) { 154 inEDTListeners.addIfAbsent(new ListenerInfo(listener, fireMode == FireMode.IN_EDT_CONSOLIDATED)); 155 } else { 156 normalListeners.addIfAbsent(new ListenerInfo(listener, false)); 157 } 158 } 159 160 public void removeDatasetListener(DataSetListener listener) { 161 ListenerInfo searchListener = new ListenerInfo(listener, false); 162 inEDTListeners.remove(searchListener); 163 normalListeners.remove(searchListener); 164 } 165 166 @Override 167 public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) { 168 if (oldLayer != null) { 169 oldLayer.data.removeDataSetListener(myListener); 170 } 171 172 if (newLayer != null) { 173 newLayer.data.addDataSetListener(myListener); 174 processDatasetEvent(new DataChangedEvent(newLayer.data)); 175 } else { 176 processDatasetEvent(new DataChangedEvent(null)); 177 } 178 } 179 180 private void fireEvents(List<ListenerInfo> listeners, AbstractDatasetChangedEvent event) { 181 for (ListenerInfo listener: listeners) { 182 if (!listener.consolidate) { 183 event.fire(listener.listener); 184 } 185 } 186 } 187 188 private void fireConsolidatedEvents(List<ListenerInfo> listeners, AbstractDatasetChangedEvent event) { 189 for (ListenerInfo listener: listeners) { 190 if (listener.consolidate) { 191 event.fire(listener.listener); 192 } 193 } 194 } 195 196 @Override 197 public void processDatasetEvent(AbstractDatasetChangedEvent event) { 198 fireEvents(normalListeners, event); 199 eventsInEDT.add(event); 200 SwingUtilities.invokeLater(edtRunnable); 201 } 203 202 } -
trunk/src/org/openstreetmap/josm/data/osm/history/HistoryNode.java
r8291 r8509 50 50 * @since 5440 51 51 */ 52 public HistoryNode(long id, long version, boolean visible, User user, long changesetId, Date timestamp, LatLon coords, boolean checkHistoricParams) { 52 public HistoryNode(long id, long version, boolean visible, User user, long changesetId, Date timestamp, LatLon coords, 53 boolean checkHistoricParams) { 53 54 super(id, version, visible, user, changesetId, timestamp, checkHistoricParams); 54 55 setCoords(coords); -
trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/LineClip.java
r8444 r8509 38 38 return false; 39 39 } 40 return cohenSutherland(p1.x, p1.y, p2.x, p2.y, clipBounds.x , clipBounds.y, clipBounds.x + clipBounds.width, clipBounds.y + clipBounds.height); 40 return cohenSutherland(p1.x, p1.y, p2.x, p2.y, clipBounds.x , clipBounds.y, 41 clipBounds.x + clipBounds.width, clipBounds.y + clipBounds.height); 41 42 } 42 43 -
trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapRendererFactory.java
r8444 r8509 128 128 activateDefault(); 129 129 } else if (!AbstractMapRenderer.class.isAssignableFrom(c)) { 130 Main.error(tr("Can''t activate map renderer class ''{0}'', because it isn''t a subclass of ''{1}''.", rendererClassName, AbstractMapRenderer.class.getName())); 130 Main.error(tr("Can''t activate map renderer class ''{0}'', because it isn''t a subclass of ''{1}''.", 131 rendererClassName, AbstractMapRenderer.class.getName())); 131 132 Main.error(tr("Activating the standard map renderer instead.")); 132 133 activateDefault(); … … 260 261 * @see AbstractMapRenderer#AbstractMapRenderer(Graphics2D, NavigatableComponent, boolean) 261 262 */ 262 public AbstractMapRenderer createActiveRenderer(Graphics2D g, NavigatableComponent viewport, boolean isInactiveMode) throws MapRendererFactoryException{ 263 public AbstractMapRenderer createActiveRenderer(Graphics2D g, NavigatableComponent viewport, boolean isInactiveMode) 264 throws MapRendererFactoryException{ 263 265 try { 264 266 Constructor<?> c = activeRenderer.getConstructor(new Class<?>[]{Graphics2D.class, NavigatableComponent.class, boolean.class}); -
trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
r8470 r8509 1086 1086 long dx, dy; 1087 1087 1088 // find half segments that are long enough to draw text on 1089 // (don't draw text over the cross hair in the center of each segment) 1088 // find half segments that are long enough to draw text on (don't draw text over the cross hair in the center of each segment) 1090 1089 List<Double> longHalfSegmentStart = new ArrayList<>(); // start point of half segment (as length along the way) 1091 1090 List<Double> longHalfSegmentEnd = new ArrayList<>(); // end point of half segment (as length along the way) … … 1139 1138 if (!longHalfSegmentStart.isEmpty()) { 1140 1139 if (way.getNodesCount() == 2) { 1141 // For 2 node ways, the two half segments are exactly 1142 // the same size and distance from the center. 1140 // For 2 node ways, the two half segments are exactly the same size and distance from the center. 1143 1141 // Prefer the first one for consistency. 1144 1142 longHalfsegmentQuality.set(0, longHalfsegmentQuality.get(0) + 0.5); … … 1214 1212 } 1215 1213 } 1216 // only works for text that is completely left-to-right or completely 1217 // right-to-left, not bi-directional text 1214 // only works for text that is completely left-to-right or completely right-to-left, not bi-directional text 1218 1215 GlyphVector gv = text.font.layoutGlyphVector(frc, chars, 0, chars.length, dirFlag); 1219 1216
Note:
See TracChangeset
for help on using the changeset viewer.