Revision 11741 trunk/applications/appgvSIG/src/com/iver/cit/gvsig/gui/styling/SymbolLevelsWindow.java
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