Revision 26365 trunk/applications/appgvSIG/src/com/iver/cit/gvsig/gui/styling/SymbolLevelsWindow.java

View differences:

SymbolLevelsWindow.java
282 282
				dataVector[i][DESCRIPTION_COLUMN_INDEX] = labels[i];
283 283
				if (syms[i] instanceof IMultiLayerSymbol) {
284 284
					boolean joined = true;
285
					IMultiLayerSymbol mlSymbol = (IMultiLayerSymbol) syms[i];
286
					// is joined if each layer belongs to distinct level
287
					for (int j = 0; j < mlSymbol.getLayerCount(); j++) {
288
						if (joined)
289
							joined = zSort.getSymbolLevel(mlSymbol.getLayer(j)) != zSort.getSymbolLevel(mlSymbol.getLayer(j+1));
285
					int[] levels = zSort.getLevels(syms[i]);
286
					if(levels != null){
287
						for (int j = 0; j < levels.length; j++) {
288
							if (joined)
289
								joined = levels[j] != levels[j+1];
290
						}
290 291
					}
291 292

  
292 293

  
294

  
293 295
					boolean merged = true;
294 296
					if (i<syms.length-1) {
295
						for (int j = 0; joined && j < mlSymbol.getLayerCount(); j++) {
297
						for (int j = 0; joined && j < levels.length; j++) {
296 298
							// must be joined to be merged
297 299
							ISymbol nextSymbol = syms[i+1];
298
							if (nextSymbol instanceof IMultiLayerSymbol) {
299
								IMultiLayerSymbol nextMLSymbol = (IMultiLayerSymbol) nextSymbol;
300
								if (j<nextMLSymbol.getLayerCount()) {
301
									merged = zSort.getSymbolLevel(mlSymbol.getLayer(j)) == zSort.getSymbolLevel(nextMLSymbol.getLayer(j));
300
							int[] nextLevels = zSort.getLevels(nextSymbol);
301
							if(nextLevels != null){
302
								if (nextSymbol instanceof IMultiLayerSymbol) {
303
									if (j<nextLevels.length) {
304
										merged = levels[j] == nextLevels[j];
305
									}
306
								} else {
307
									merged = levels[0] == nextLevels[0];
302 308
								}
303
							} else {
304
								merged = zSort.getSymbolLevel(mlSymbol.getLayer(0)) == zSort.getSymbolLevel(nextSymbol);
305 309
							}
306 310
						}
307 311
						if (!merged)
......
338 342
				dataVector[i][SYMBOL_COLUMN_INDEX] = syms[i];
339 343
				dataVector[i][DESCRIPTION_COLUMN_INDEX] = labels[i];
340 344
				if (syms[i] instanceof IMultiLayerSymbol) {
341
					IMultiLayerSymbol mySym = (IMultiLayerSymbol) syms[i];
342
					for (int j = 0; j < mySym.getLayerCount(); j++) {
343
						dataVector[i][j+FIRST_LEVEL_COLUMN_INDEX] = new Integer(zSort.getSymbolLevel(mySym.getLayer(j)));
345
					int[] levels = zSort.getLevels(syms[i]);
346

  
347
					for (int j = 0; j < levels.length; j++) {
348
						dataVector[i][j+FIRST_LEVEL_COLUMN_INDEX] = levels[j];
344 349
					}
345 350
				} else {
346
					dataVector[i][FIRST_LEVEL_COLUMN_INDEX] = new Integer(zSort.getSymbolLevel(syms[i]));
351
					dataVector[i][FIRST_LEVEL_COLUMN_INDEX] = new Integer(zSort.getLevels(syms[i])[0]);
347 352
				}
348 353
			}
349 354

  

Also available in: Unified diff