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

View differences:

SymbolLevelsWindow.java
54 54
import javax.swing.JPanel;
55 55
import javax.swing.JScrollPane;
56 56
import javax.swing.JTable;
57
import javax.swing.JTextField;
58 57
import javax.swing.border.EtchedBorder;
59 58
import javax.swing.table.DefaultTableModel;
60 59
import javax.swing.table.TableColumn;
......
131 130

  
132 131
		for (int i = 0; i < model.getRowCount(); i++) {
133 132
			System.out.print("["+i+"]");
134
		for (int j = 0; j < model.getColumnCount(); j++) {
135
			System.out.print(j+":"+model.getValueAt(i, j)+"\t\t");
133
			for (int j = 0; j < model.getColumnCount(); j++) {
134
				System.out.print(j+":"+model.getValueAt(i, j)+"\t\t");
135
			}
136
			System.out.println();
136 137
		}
137
		System.out.println();
138
		}
139 138

  
140 139

  
141 140

  
142 141

  
143 142
		ISymbol[] symbols = zSort.getSymbols();
143
		zSort.clear();
144 144
		for (int i = 0; i < model.getRowCount(); i++) {
145 145
			symbols[i] =(ISymbol) model.getValueAt(i,0);
146 146
		}
......
171 171
						} else {
172 172
							// each layer has its own render level.
173 173
							for (int j = 0; j < mlSym.getLayerCount(); j++) {
174
								System.out.println(zSort.getLevelCount());
174 175
								zSort.setLevelToSymbol(mlSym.getLayer(j), zSort.getLevelCount() + 1);
175 176
							}
176 177
						}
......
180 181
						// order than the previous one.
181 182

  
182 183
						// NOTE: a merged symbol is automatically joined
183
						ISymbol prevSym = symbols[i-1];
184
						int j = 0;
184
						if (i>0) {
185
							ISymbol prevSym = symbols[i-1];
186
							int j = 0;
185 187

  
186 188

  
187
						if (prevSym instanceof IMultiLayerSymbol) {
188
							IMultiLayerSymbol prevMultiLayerSym = (IMultiLayerSymbol) prevSym;
189
							for (j = 0; j < prevMultiLayerSym.getLayerCount() &&
190
										j < mlSym.getLayerCount(); j++) {
189
							if (prevSym instanceof IMultiLayerSymbol) {
190
								IMultiLayerSymbol prevMultiLayerSym = (IMultiLayerSymbol) prevSym;
191
								for (j = 0; j < prevMultiLayerSym.getLayerCount() &&
192
								j < mlSym.getLayerCount(); j++) {
191 193

  
192
								zSort.setLevelToSymbol(mlSym.getLayer(j)
193
										, zSort.getSymbolLevel(prevMultiLayerSym.getLayer(j)));
194
									zSort.setLevelToSymbol(mlSym.getLayer(j)
195
											, zSort.getSymbolLevel(prevMultiLayerSym.getLayer(j)));
196
								}
197
							} else {
198
								zSort.setLevelToSymbol(mlSym.getLayer(j), zSort.getSymbolLevel(prevSym));
194 199
							}
195
						} else {
196
							zSort.setLevelToSymbol(mlSym.getLayer(j), zSort.getSymbolLevel(prevSym));
200

  
201
							// this for will fill up the rest of symbol's layer's level, if any..
202
							for (j = i+1; j < symbols.length; j++) {
203
								zSort.setLevelToSymbol(mlSym.getLayer(j), zSort.getLevelCount() + 1);						}
197 204
						}
198

  
199
						// this for will fill up the rest of symbol's layer's level, if any..
200
						for (j = j+1; j < symbols.length; j++) {
201
							zSort.setLevelToSymbol(mlSym.getLayer(j), zSort.getLevelCount() + 1);						}
202 205
					}
203 206
				} else {
204 207
					mergedToPreviousSymbol = false;
......
244 247
	}
245 248

  
246 249
	public void setModel(ZSort plan) {
247
		advancedHeaders = new String[2+plan.getSymbolLevelCount()];
250
		advancedHeaders = new String[2+plan.getMaxSymbolLayerCount()];
248 251
		advancedHeaders[SYMBOL_COLUMN_INDEX] = defaultHeaders[SYMBOL_COLUMN_INDEX];
249 252
		advancedHeaders[DESCRIPTION_COLUMN_INDEX] = defaultHeaders[DESCRIPTION_COLUMN_INDEX];
250 253
		for (int i = 2; i < advancedHeaders.length; i++) {
......
271 274
					boolean joined = true;
272 275
					IMultiLayerSymbol mlSymbol = (IMultiLayerSymbol) syms[i];
273 276
					// is joined if each layer belongs to distinct level
274
					for (int j = 0; j < mlSymbol.getLayerCount()-1; j++) {
277
					for (int j = 0; j < mlSymbol.getLayerCount(); j++) {
275 278
						if (joined)
276 279
							joined = plan.getSymbolLevel(mlSymbol.getLayer(j)) != plan.getSymbolLevel(mlSymbol.getLayer(j+1));
277 280
					}
281

  
282

  
283
					boolean merged = true;
284
					if (i<syms.length-1) {
285
						for (int j = 0; joined && j < mlSymbol.getLayerCount(); j++) {
286
							// must be joined to be merged
287
							ISymbol nextSymbol = syms[i+1];
288
							if (nextSymbol instanceof IMultiLayerSymbol) {
289
								IMultiLayerSymbol nextMLSymbol = (IMultiLayerSymbol) nextSymbol;
290
								if (j<nextMLSymbol.getLayerCount()) {
291
									merged = plan.getSymbolLevel(mlSymbol.getLayer(j)) == plan.getSymbolLevel(nextMLSymbol.getLayer(j));
292
								}
293
							} else {
294
								merged = plan.getSymbolLevel(mlSymbol.getLayer(0)) == plan.getSymbolLevel(nextSymbol);
295
							}
296
						}
297
						if (!merged)
298
							break;
299
					}
300
					if (!joined) merged = false;
278 301
					dataVector[i][JOIN_COLUMN_INDEX] = new Boolean(joined);
302
					dataVector[i][MERGE_COLUMN_INDEX] = new Boolean(merged);
279 303
				}
280 304
			}
281 305

  
......
283 307
			table.setModel(model);
284 308
			TableColumn col = table.getColumnModel().getColumn(JOIN_COLUMN_INDEX);
285 309
			col.setCellRenderer(new BooleanTableCellRenderer(true));
286
			col.setCellEditor(new BooleanTableCellEditor());
310
			col.setCellEditor(new BooleanTableCellEditor(table));
287 311
			col = table.getColumnModel().getColumn(MERGE_COLUMN_INDEX);
288 312
			col.setCellRenderer(new BooleanTableCellRenderer(true));
289
			col.setCellEditor(new BooleanTableCellEditor());
313
			col.setCellEditor(new BooleanTableCellEditor(table));
290 314
		} else {
291
			dataVector = new Object[syms.length][plan.getSymbolLevelCount()+3];
315
			dataVector = new Object[syms.length][plan.getMaxSymbolLayerCount()+3];
292 316
			for (int i = 0; i < syms.length; i++) {
293 317
				dataVector[i][SYMBOL_COLUMN_INDEX] = syms[i];
294 318
				dataVector[i][DESCRIPTION_COLUMN_INDEX] = labels[i];
295 319

  
296 320
				if (syms[i] instanceof IMultiLayerSymbol) {
297 321
					IMultiLayerSymbol mySym = (IMultiLayerSymbol) syms[i];
298
					for (int j = 0; j < mySym.getLayerCount()-1; j++) {
322
					for (int j = 0; j < mySym.getLayerCount(); j++) {
299 323
						dataVector[i][j+FIRST_LEVEL_COLUMN_INDEX] = new Integer(plan.getSymbolLevel(mySym.getLayer(i)));
300 324
					}
301 325
				} else {
......
307 331
			for (int j = FIRST_LEVEL_COLUMN_INDEX; j < model.getColumnCount(); j++) {
308 332
				table.getColumnModel().getColumn(j).setCellEditor(new IntegerTableCellEditor());
309 333
			}
310

  
311

  
312 334
		}
313 335

  
314 336
		TableSymbolCellRenderer symbolCellRenderer = new TableSymbolCellRenderer(true);
315 337
		TableColumn col = table.getColumnModel().getColumn(SYMBOL_COLUMN_INDEX);
316 338
		col.setCellRenderer(symbolCellRenderer);
317

  
318

  
319 339
	}
320 340

  
321 341
	/**

Also available in: Unified diff